如何正确使用 |> 运算符?

how to correctly use |> operator?

当我尝试在 elm

中使用 |> 运算符时出现错误
kl : List Float
kl =
    List.map toFloat (List.range 1 10)
kll : Float
kll =
    let
        half x =
            x / 2
    in
    List.sum (List.map half (List.map toFloat (List.range 1 10)))

下面的代码我使用 |> 并得到一个错误:

klpipe : List Float
klpipe =
    1 10 |> List.range |> toFloat |> List.map

|> 只能用于将左侧的单个参数应用于右侧的函数。这里有几个例子可以让你直观地了解它是如何工作的:

x |> f == f x
y |> f x == f x y
f x |> g == g (f x)

可以 使用 |> 将多个参数应用于单个函数,但您必须一次一个地以相反的顺序进行,并使用括号来违背其自然结合性:

10 |> (1 |> List.range) |> (toFloat |> List.map)

此处括号内的表达式均计算为“适合”管道右侧的函数。如果没有括号,1 |> 10 |> List.range 将等同于 `List.range (10 1).

但是我觉得这不是很可读,而是会更谨慎地使用管道运算符:

List.range 1 10 |> List.map toFloat

仅仅因为你可以让它看起来像钉子并不意味着你应该用锤子敲它。