Skip to content

Commit

Permalink
sequenceK semigroup combine fix
Browse files Browse the repository at this point in the history
  • Loading branch information
richard-gibson committed Jul 3, 2018
1 parent 35ebe3f commit 48c8d88
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 3 deletions.
Expand Up @@ -9,6 +9,8 @@ import arrow.test.laws.*
import arrow.typeclasses.Eq
import arrow.typeclasses.Show
import io.kotlintest.KTestJUnitRunner
import io.kotlintest.properties.Gen
import io.kotlintest.properties.map
import org.junit.runner.RunWith

@RunWith(KTestJUnitRunner::class)
Expand All @@ -32,7 +34,14 @@ class SequenceKTest : UnitSpec() {
ShowLaws.laws(show, eq) { sequenceOf(it).k() },
MonadLaws.laws(this, eq),
MonoidKLaws.laws(this, this, eq),
TraverseLaws.laws(this, this, { n: Int -> SequenceK(sequenceOf(n)) }, eq)
TraverseLaws.laws(this, this, { n: Int -> SequenceK(sequenceOf(n)) }, eq),
SemigroupKLaws.laws(this, this, eq),
MonoidLaws.laws(SequenceK.monoid(), Gen.list(Gen.int()).map{it.asSequence()}.generate().k(), eq),
SemigroupLaws.laws(SequenceK.semigroup(),
Gen.list(Gen.int()).map{it.asSequence()}.generate().k(),
Gen.list(Gen.int()).map{it.asSequence()}.generate().k(),
Gen.list(Gen.int()).map{it.asSequence()}.generate().k(),
eq)
)
}
}
Expand Down
Expand Up @@ -11,12 +11,12 @@ import arrow.data.combineK as sequenceCombineK

@instance(SequenceK::class)
interface SequenceKSemigroupInstance<A> : Semigroup<SequenceK<A>> {
override fun SequenceK<A>.combine(b: SequenceK<A>): SequenceK<A> = (this + b).k()
override fun SequenceK<A>.combine(b: SequenceK<A>): SequenceK<A> = (this.sequence + b.sequence).k()
}

@instance(SequenceK::class)
interface SequenceKMonoidInstance<A> : Monoid<SequenceK<A>> {
override fun SequenceK<A>.combine(b: SequenceK<A>): SequenceK<A> = (this + b).k()
override fun SequenceK<A>.combine(b: SequenceK<A>): SequenceK<A> = (this.sequence + b.sequence).k()

override fun empty(): SequenceK<A> = emptySequence<A>().k()
}
Expand Down

0 comments on commit 48c8d88

Please sign in to comment.