在Elm checkboxes example中,Action
传递给tag
函数的checkbox
参数(第51-53行)。
我不明白这个参数的类型签名是(Bool -> Action)
以及第69行如何能够使用函数组合运算符<<
从{Bool
转换targetChecked
1}}进入完整的Action
类型。
编辑:
这个问题可以简化为“为什么以下工作?”
type Action = Edit Int
do : (Int -> Action) -> Action
do tag = tag(123)
result : Action
result = do(Edit)
答案 0 :(得分:5)
定义联合类型时,联合类型的每个标记都将成为定义的值。所以当你定义:
type Action = Tick | NoOp
这也定义了:
Tick : Action
NoOp : Action
当union标签有参数时,它变成一个&#34;构造函数&#34;,一个函数:
type Action = Edit Int
Edit : Int -> Action
(这些标记也可用作您可以与case
- of
构造匹配的模式。另请参阅documentation on the website。)