SKI演算和BCKW的实际应用

Eli*_*der 9 functional-programming lambda-calculus

我可以理解如何创建和思考SKI和BCKW演算,但我永远无法找到实际用途.也许我看得不够深?也就是说,我想知道(仅仅是一个例子,我并不是暗示这是真的)Java Servlets广泛使用S而Python生成器是BCW的一个例子,我只是无法透过树林看到它?

Lam*_*iry 11

在Haskell,他们到处都是!

  • B<$>
  • Cflip
  • Kpure
  • id
  • S<*>
  • Wjoin

从Haskell的角度来看,<$>意味着"在上下文中做".

  • (+2) <$> (*3)意味着在乘以3后加2 .
  • (+2) <$> [1,2,3]意味着为列表中的每个元素添加两个.
  • (+2) <$> (read . getLine)意味着在我刚读过的数字上加两个.
  • (+2) <$> someParser意味着将两个加到我刚解析的数字上.

具有上下文的事物称为仿函数.所有的Java/Python/C++迭代器都只是奇怪的内外版本的仿函数.

另一种联系:S和K组合在一起是Turing-complete.在Haskell,pure<*>一起形成适用函子.

当然,了解其他组合器如何适应将需要学习Haskell.但是这个例子说明了组合者如何在语言中如此根深蒂固.