LevT
![](http://forum.ru-board.com/board/avatars/no_portait.gif)
Platinum Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору TheBarmaley То ли один, то ли другой (непомню точно), доказал, что обе машины эквивалентны. Хаскеля я ковыряю вот прямо сейчас Код: -- функция zip склеивает два списка в список пар zip :: [a] -> [b] -> [(a,b)] zip [] (y:ys) = [] zip [x] (y:ys) = [(x, y)] zip (x:xs) (y:ys) = (x,y) : zip xs ys >zip "abc" [1,3..] ('a', 1), ('b', 3), ('c', 5) | Код: > take 42 (zip [1..] [-1,-2..]) [(1,-1),(2,-2),(3,-3),(4,-4),(5,-5),(6,-6),(7,-7),(8,-8),(9,-9),(10,-10),(11,-11),(12,-12),(13,-13),(14,-14),(15,-15),(16,-16),(17,-17),(18,-18),(19,-19),(20,-20),(21,-21),(22,-22),(23,-23),(24,-24),(25,-25),(26,-26),(27,-27),(28,-28),(29,-29),(30,-30),(31,-31),(32,-32),(33,-33),(34,-34),(35,-35),(36,-36),(37,-37),(38,-38),(39,-39),(40,-40),(41,-41),(42,-42)] | Код: enumerate :: [a] -> [(Integer, a)] enumerate list = zip [0,1..] list > enumerate (take 4 ([2,4..])) [(0,2),(1,4),(2,6),(3,8)] > take 4 (enumerate ([2,4..])) [(0,2),(1,4),(2,6),(3,8)] |
|