новый для Haskell здесь.
Я хотел бы написать:
take 1 $ take 2 [1, 2, 3] -- = 1
обратный , как этот псевдокод:
[1, 2, 3] -> take 2 -> take 1 -- = 1
В Clojure мы можем сделать это с помощью:
(->> [1 2 3]
(take 2)
(take 1)) ;=> (1)
Clojure делает это, потому что ->>
- это макрос, который переписывает выражение в (take 1 (take 2 [1 2 3]))
, а потому что Haskell является ленивым и имеет частичные и еще, кажется, это должно быть легко.
Я хочу сделать это, потому что сначала иметь данные, а затем читать функции, чтобы они выполнялись, это прекрасный способ чтения кода. Я был избалован Clojure!
Это похоже на беглый интерфейс / цепочку var.action1().action2()
et c в объектно-ориентированных языках.
Я думаю, это возможно в Template Haskell, но наверняка есть встроенный способ сделать это, которого я еще не знаю? Спасибо!