榆树是否支持美元运算符($)?

时间:2015-12-07 05:35:39

标签: functional-programming elm

在Haskell中,您可以使用$运算符来清理代码,从而无需使用parens。

elm是否支持此运算符或类似的东西?

我可以自己定义,但我希望这是内置的东西。

以下是它的工作原理:

import Html
import List exposing (map, foldr)

datas = [("a", 1), ("b", 2), ("c", 3)]

{--}
($) : (a -> b) -> (a -> b)
($) a b = a b
infixr 0 $
--}

main =
  {-- replace all these parens
  Html.text (toString (foldr (++) "" (map fst datas)))
  --}
  Html.text $ toString $ foldr (++) "" $ map fst datas

1 个答案:

答案 0 :(得分:19)

是的,我们使用<|代替$。我们从F#借用了翻转版本|><<用于合成.和翻转版本>>
一旦这些被引入,人们自然会倾向于使用被称为“流水线”的样式,您可以使用|>运算符获取一些数据并使用几个步骤对其进行转换。现在,这是榆树代码中比使用<|更常见的代码模式。

例如:

update : (Float, Keys) -> Model -> Model
update (dt, keys) mario =
  mario
  |> gravity dt
  |> jump keys
  |> walk keys
  |> physics dt

(取自Mario example on the website