是Haskell的dollar $运算符,是F#的倒数管道<|同样的想法?

时间:2019-12-28 12:00:52

标签: haskell f#

我使用F#已经好几年了, 现在我想学一点Haskell, 并找出我可以转移的想法。

2 个答案:

答案 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#f << g↔Haskell f . g
  • F#::↔Haskell :,而F#:↔Haskell ::
  • F#<>↔Haskell /=
  • F#|>>>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
相关问题