Esempio n. 1
0
    def test_word_counter_pipeline(self):
        sentence = """Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam lectus ligula, ultricies eget placerat vitae, condimentum ut lacus. Donec congue ipsum in lorem posuere porttitor. Nam nibh neque, volutpat ac ultrices nec, mollis a orci. Etiam ac ultrices turpis. Maecenas nec adipiscing nunc. Aenean laoreet vestibulum molestie. Ut bibendum tellus et lorem viverra eu fermentum nibh dictum. Nunc in eleifend erat. Mauris sit amet neque enim, ac bibendum quam. Pellentesque purus est, lacinia quis rhoncus vitae, pulvinar non tellus. Sed id mi et eros eleifend scelerisque. Quisque orci odio, porttitor ut viverra ac, consequat a ante. Nunc eget augue quis."""
        word = "ipsum"
        iden = lambda x: Just(x)
        words = lambda x: x.split()
        filter_ = lambda x: filter(lambda w: w == word, x)
        length = lambda x: len(x)

        head = KleisliArrow(just_return, iden)
        arrow = head >> head.arr(words) >> head.arr(filter_) >> head.arr(length) >> KleisliArrow(just_return, iden)
        self.assertEquals(Just(length(filter_((words(sentence))))), KleisliArrow.runKleisli(arrow, sentence))
Esempio n. 2
0
 def test_kleisli_compose_with_function_arrow(self):
     value = 7
     f = lambda x: x * 2
     head = KleisliArrow(just_return, lambda a: Just(f(a)))
     arrow = head >> head.arr(f) >> head.arr(lambda x: x)
     self.assertEquals(Just(f(f(value))), KleisliArrow.runKleisli(arrow, value))