我可以从这个Elm表达式中删除lambda吗?

时间:2016-01-20 01:48:41

标签: lambda higher-order-functions elm combinators

这是一个完整的Elm脚本,它将一堆元组放入HTML <ul>元素中。

import Html exposing (ul, li, text)
import List exposing (map)

values = [(1,2,3), (4,5,6), (7,8,9)]

main =
  ul [] (values |> map (\t -> li [] [text(toString(t))]))

我喜欢在可能的情况下使用|>或其他高阶运算符,但考虑到t在上面的表达式中相对较深的嵌套,我还是无法弄清楚表达这条线的好方法。在Elm中是否有更高阶的运算符允许\t lambda不必要?

我意识到使用lambda可能更具可读性,但是想知道这里应该使用哪种组合器,因为toString调用是在列表中。

1 个答案:

答案 0 :(得分:6)

如果你想避免使用lambda,那么从values和“管道”开始就更容易了,一次转换一步,使它达到你想要的最终形式:

import Html exposing (ul, li, text)
import List exposing (map, repeat)

values = [(1,2,3), (4,5,6), (7,8,9)]

main
  = map toString values
  |> map text
  |> map (repeat 1)
  |> map (li [])
  |> ul []