【发布时间】:2014-10-01 10:59:54
【问题描述】:
我最近一直在学习 F#(我的背景是 C#)并且正在阅读网站 http://fsharpforfunandprofit.com,我发现它非常有帮助。
我必须 http://fsharpforfunandprofit.com/posts/defining-functions/ 这是关于组合器的部分。除了红隼之外,我都理解它们(尽管 Y 组合器或 Sage 鸟在我的脑海中会出现问题!)。 Scott Wlaschin 给出的定义(在 F# 中)为:
let K x y = x
我这辈子都无法理解这对我有用的任何情况。起初我认为它可以用作链运算符,以便您可以将值传递给函数然后取回原始值。我以前自己写过这样的运算符,但你可以看到它不一样:
let (>|) x f = f x; x
如果我们部分应用 K 组合子(值为 5),那么我们会返回一个忽略其参数并返回 5 的函数。同样,没有用。
(K 5) = fun y -> 5
谁能给我一个简单的例子来说明这可能在哪里使用?
【问题讨论】:
-
:D 看看这个:en.wikipedia.org/wiki/SKI_combinator_calculus - 这真的只是学术上的乐趣 - 即使你在 F# 中找到了一些用途,你也不应该只称它为
K^^ -
顺便说一句,如果您没有立即找到它 -
K例如用于在 SKI 演算中实现布尔值、元组、数字等内容(嗯,它是一个基本的构建块;) ) - 只需将其视为对第一个组件的一种投影 -
谢谢,我已经阅读了维基百科页面,但它没有提供比我已经拥有的更多信息。
-
你到底想知道什么(这是一个很大的话题)
-
K-Combinator 在与部分应用程序一起使用时变得有用。它设置了“重新开始”功能。
标签: f# functional-programming sample combinators k-combinator