예제 #1
0
 public function test_fix()
 {
     $actual = Functools::fix(function ($rec) {
         return function ($n) use($rec) {
             return $n == 0 ? 1 : $n * $rec($n - 1);
         };
     });
     $this->assertEquals(120, $actual(5));
 }
예제 #2
0
 public function test_functools_wrapper()
 {
     $f = function () {
     };
     $this->assertEquals(f::arity('explode'), _::arity('explode'));
     $this->assertEquals(f::tuple('hoge'), _::tuple('hoge'));
     $this->assertEquals(f::cons("a", "b"), _::cons("a", "b"));
     $this->assertEquals(f::curry($f), _::curry($f));
     $this->assertEquals(f::fix($f), _::fix($f, $f));
     $this->assertEquals(f::compose($f, $f), _::compose($f, $f));
 }