【问题标题】:Is the dollar operator ($) supported in elm?elm 是否支持美元运算符($)?
【发布时间】:2015-12-07 05:35:39
【问题描述】:

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

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

【问题讨论】:

    标签: functional-programming elm


    【解决方案1】:

    是的,我们使用<| 而不是$。我们从 F# 借用了它以及翻转版 |><< 用于组合 . 和翻转版 >>
    一旦引入了这些,人们自然会倾向于一种被称为“流水线”的风格,你可以在其中获取一些数据并使用|> 运算符通过几个步骤对其进行转换。如今,这是 Elm 代码中比使用 <| 更常见的代码模式。

    例如:

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

    (取自Mario example on the website

    【讨论】:

    • 不错。我在文档中看到了这一点,但没有建立联系如何以同样的方式清理东西。我肯定想使用 |> 并向前阅读我的代码而不是 $ 并且必须向后阅读我的代码
    • 另外,这在 clojure 中被称为“thrush”运算符,但它在 curried 函数上实现了一个中缀运算符,而不是作为宏。
    猜你喜欢
    • 2011-08-27
    • 1970-01-01
    • 2022-06-29
    • 2012-04-25
    • 2012-02-11
    • 2011-07-25
    • 2014-05-28
    • 2011-09-06
    • 1970-01-01
    相关资源
    最近更新 更多