Jun 05, 2011 15:06
Разгрыз аппликативные функторы. Лучше поздно, чем никогда. И не просто в теории, но и на практике тоже.
Хорошая штука для своих применений, главное из которых -- эмуляция "функции с переменным количеством аргументов".
В моём конкретном примере, имея некое окружение (заданное статически пока что, в виде [("a", String "str"); ("b", Int 123); ("c", Bool True)]), код
value () = run &
(fun f -> f <$> string "a" <*> int "b" <*> bool "c")
(Printf.printf "a=%S b=%i c=%b")
;
выводит ожидаемое:
a="str" b=123 c=true
Мне эти функторы пригодятся для обработки значений с типом sql_t = [ `Null | `String of string | `Binary of string | ... ].
Конкретику ищите в репке "amall", если представляете, что это.