예제 #1
0
 def test_composition(self):
     self.assertEqual(
         _run(
             self._class.insert(1).map(
                 lambda x: common_tests.sub(2, common_tests.add(1, x)))),
         _run(
             self._class.insert(1).map(common_tests.add(1)).map(
                 common_tests.sub(2))))
예제 #2
0
 def test_application_is_associative(self):
     self.assertEqual(
         _run(
             self._class.apply(common_tests.add).to_arguments(
                 self._class.insert(1), self._class.insert(2))),
         _run(
             self._class.apply(
                 lambda args: common_tests.add(*args)).to_arguments(
                     self._class.apply(lambda b: (1, b)).to_arguments(
                         self._class.insert(2)))))
예제 #3
0
 def test_application_is_same_as_mapping(self):
     f = common_tests.add(1)
     self.assertEqual(
         _run(self._class.apply(f).to_arguments(self._class.insert(2))),
         _run(self._class.insert(2).map(f)))
예제 #4
0
 def test_application_is_homomorphic(self):
     f = common_tests.add(1)
     self.assertEqual(
         _run(self._class.insert(f(2))),
         _run(self._class.apply(f).to_arguments(self._class.insert(2))))
예제 #5
0
 def test_apply_then_insert(self):
     self.assertEqual(_run(self._class.insert(1).map(common_tests.add(1))),
                      _run(self._class.insert(common_tests.add(1, 1))))
예제 #6
0
 def test_then_with_normal_function(self):
     self.assertEqual(_run(self._class.insert(0).then(common_tests.add(1))),
                      _run(self._class.insert(1)))