Eli*_*der 9 functional-programming lambda-calculus
我可以理解如何创建和思考SKI和BCKW演算,但我永远无法找到实际用途.也许我看得不够深?也就是说,我想知道(仅仅是一个例子,我并不是暗示这是真的)Java Servlets广泛使用S而Python生成器是BCW的一个例子,我只是无法透过树林看到它?
Lam*_*iry 11
在Haskell,他们到处都是!
<$>flippureid<*>join从Haskell的角度来看,<$>意味着"在上下文中做".
(+2) <$> (*3)意味着在乘以3后加2 .(+2) <$> [1,2,3]意味着为列表中的每个元素添加两个.(+2) <$> (read . getLine)意味着在我刚读过的数字上加两个.(+2) <$> someParser意味着将两个加到我刚解析的数字上.具有上下文的事物称为仿函数.所有的Java/Python/C++迭代器都只是奇怪的内外版本的仿函数.
另一种联系:S和K组合在一起是Turing-complete.在Haskell,pure并<*>一起形成适用函子.
当然,了解其他组合器如何适应将需要学习Haskell.但是这个例子说明了组合者如何在语言中如此根深蒂固.