package scalaz.example
import scalaz._
object ExampleFold {
def main(args: Array[String]) = run
import Scalaz._
def run {
(List(1, 2, 3).foldl("0")((a, b) => "f(" + a.toString + ", " + b + ")")) assert_=== "f(f(f(0, 1), 2), 3)"
(List(1, 2, 3).foldr("0")((a, b) => "f(" + a.toString + ", " + b + ")")) assert_=== "f(1, f(2, f(3, 0)))"
(List(1, 2, 3).foldl(0)(_ + _)) assert_=== 6
(List(1, 2, 3) foldl1 (_ + _)) assert_=== some(6)
(List.empty[Int] foldl1 (_ + _)) assert_=== none
(List(1, 2, 3).asMA.sum) assert_=== 6
(List("a", "b", "c").asMA.sum) assert_=== "abc"
("abC".toList ∃ (c => Character.isUpperCase(c))) assert_=== true
(Stream.continually(1) ∃ (_ > 0)) assert_=== true
Set(1, 2, 3) ∃ { _ % 2 == 0 } assert_=== true
(Stream.continually(1) ∀ (_ == 0)) assert_=== false
("123".toSeq.asMA.count) assert_=== 3
(some(0).asMA.count) assert_=== 1
(50 ∈: Stream.range(0, 100)) assert_=== true
Stream.range(0, 100) ∋ 50 assert_=== true
(1 to 10).toList splitWith {_ % 5 < 2} assert_=== List(List(1), List(2, 3, 4), List(5, 6), List(7, 8, 9), List(10))
(1 to 10).toList selectSplit {_ % 5 < 2} assert_=== List(List(1), List(5, 6), List(10))
}
}