Skip to content

Commit 67ad7a9

Browse files
committed
add IsEmpty[DList]
1 parent d490675 commit 67ad7a9

File tree

2 files changed

+3
-1
lines changed

2 files changed

+3
-1
lines changed

core/src/main/scala/scalaz/DList.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,11 +73,12 @@ sealed abstract class DListInstances {
7373
val zero = DList[A]()
7474
def append(a: DList[A], b: => DList[A]) = a ++ b
7575
}
76-
implicit val dlistMonadPlus: MonadPlus[DList] with Traverse[DList] with Zip[DList] = new MonadPlus[DList] with Traverse[DList] with Zip[DList] {
76+
implicit val dlistMonadPlus: MonadPlus[DList] with Traverse[DList] with Zip[DList] with IsEmpty[DList] = new MonadPlus[DList] with Traverse[DList] with Zip[DList] with IsEmpty[DList] {
7777
def point[A](a: => A) = DList(a)
7878
def bind[A, B](as: DList[A])(f: A => DList[B]) = as flatMap f
7979
def plus[A](a: DList[A], b: => DList[A]) = a ++ b
8080
def empty[A] = DList()
81+
def isEmpty[A](fa: DList[A]) = fa.isEmpty
8182
def zip[A,B](a: => DList[A], b: => DList[B]): DList[(A, B)] = a zip b
8283
def traverseImpl[F[_], A, B](fa: DList[A])(f: A => F[B])(implicit F: Applicative[F]): F[DList[B]] =
8384
fa.foldr(F.point(DList[B]()))((a, fbs) => F.apply2(f(a), fbs)(_ +: _))

tests/src/test/scala/scalaz/DListTest.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ object DListTest extends SpecLite {
1212
checkAll(monoid.laws[DList[Int]])
1313
checkAll(zip.laws[DList])
1414
checkAll(traverse.laws[DList])
15+
checkAll(isEmpty.laws[DList])
1516
checkAll(monadPlus.strongLaws[DList])
1617
"DList append" ! ((0 to 100000).foldLeft(DList[Int]())(_ :+ _).toList must_== (0 to 100000).toList)
1718

0 commit comments

Comments
 (0)