Monday, November 24th, 2008

Сложная композиция функторов

Многих программистов сбивает с толку термин монада. Но если программист знаком с функторами, то имеет смысл спросить его: насколько он далеко ушел в построении сложных функторов. Наверняка он будет удивлен, что из простых функторов можно, с помощью композиции, строить настолько сложные функторы, что они будут обладать свойством самостоятельного языка, имеющего уникальную семантику.Если вы среди таких людей и слабо в это верите, то ниже свежий пример, написанный на питоне:

action = Parallel([
                    RepeatSequence (
                        Print("action1"),
                        Delay(1.0) ),
                    RepeatSequence (
                        Print("action2"),
                        Delay(3.0) ) 
                 ])
run(action)


Эта программа будет вести как и написано:
"action1" будет печаться через каждую секунду, а "action2" каждые - 3 секунды.
В самом языке Питон нет языковой конструкции, выражающей параллельность. Здесь же такая конструкция есть, и она реализована без использования тредов!
(4 comments | Leave a comment)