我使用F#已经好几年了, 现在我想学一点Haskell, 并找出我可以转移的想法。
答案 0 :(得分:10)
是-它们是等效的。我不知道F#,但是在Haskell中,此运算符经常用于简化长括号表达式:$
的优先级低于任何其他运算符,例如f x + y
被解释为(f x) + y
,但是f $ x + y
被解释为f (x + y)
。同样,一长串f (g (h x))
可以写成f $ g $ h x
。
翻阅list of F# operators,以下是一些可以帮助您的信件:
f << g
↔Haskell f . g
::
↔Haskell :
,而F#:
↔Haskell ::
<>
↔Haskell /=
|>
和>>
在Prelude
中没有任何对应的运算符-我希望他们有!但是您可以根据需要使用Data.Function.&
和Control.Category.>>>
替换它们。答案 1 :(得分:0)
Haskell允许您定义自定义运算符。 F#|>运算符可以这样定义:
(|>) :: a -> (a -> b) -> b
a |> f = f a
F#<|
(<|) :: (a -> b) -> a -> b
f <| a = f a
和F#>>
(>>) :: (a -> b) -> (b -> c) -> (a -> c)
f >> g = (.) g f