Ram*_*amy 2 f# haskell functional-programming
在F#工作让我了解Haskell.我目前正在本教程的第7章,我强烈建议.但是问题很快.也许我已经领先于自己,我会在未来的章节中找到答案,但是,如果函数只接受F#中的一个参数,是否有一种方法可以反转函数的位置和它的参数.因此,例如,在F#中如果你有一个名为digitToInt的函数(就像在Haskell中那样),你可以执行以下操作:
3 |> digitToInt
我知道使用后退滴答,但这是专门用于二进制函数.一元函数有什么相似之处吗?
一种方法是定义一个(|>)
接收值和函数的中缀函数,并调用函数传递给它的值如下:
(|>) :: a -> (a -> b) -> b
(|>) x f = f x
Run Code Online (Sandbox Code Playgroud)
然后你可以像在你的例子中一样使用它:
3 |> digitToInt
Run Code Online (Sandbox Code Playgroud)
你可以做peoro建议的,它工作正常.但是,我建议不要这样做."读取"Haskell的正常方式就像一个句子 - 从左到右,动词在开头,主题在结尾.通常你会得到一个链式组合f . g. q . r $ x
.通过monadic运算符,您可以获得f =<< g =<< x
(或(f <=< g) =<< x
)应用程序f <$> x <*> y <*> z
.因此,扭转事物的正常顺序不一定是惯用的.
顺便说一句,我听说过,F#选择相反算子的原因是它与visualstudio自动完成功能非常吻合 - 如果你键入了你正在操作的值,那么它的类型可以确定选择什么可以操作它.这种工具支持非常棒,而且采用替代风格也是一个很好的理由.