`targetChecked` 中的 Bool 如何变成 `Action`?
How does the Bool from `targetChecked` get turned into an `Action`?
在 Elm checkboxes example 中,一个 Action
被传递给 checkbox
函数的 tag
参数(第 51-53 行)。
我不明白这个参数的类型签名是如何 (Bool -> Action)
以及它如何在第 69 行使用函数组合运算符 <<
将 Bool
从targetChecked
变成完整的 Action
类型。
编辑:
这个问题可以简化为"why does the following work?"
type Action = Edit Int
do : (Int -> Action) -> Action
do tag = tag(123)
result : Action
result = do(Edit)
当你定义一个联合类型时,联合类型的每个标签都成为一个定义值。所以当你定义:
type Action = Tick | NoOp
这也定义了:
Tick : Action
NoOp : Action
当联合标签有参数时,它变成了一个"constructor",一个函数:
type Action = Edit Int
Edit : Int -> Action
(这些标签也用作可以与 case
-of
构造匹配的模式。另请参阅 documentation on the website。)
在 Elm checkboxes example 中,一个 Action
被传递给 checkbox
函数的 tag
参数(第 51-53 行)。
我不明白这个参数的类型签名是如何 (Bool -> Action)
以及它如何在第 69 行使用函数组合运算符 <<
将 Bool
从targetChecked
变成完整的 Action
类型。
编辑:
这个问题可以简化为"why does the following work?"
type Action = Edit Int
do : (Int -> Action) -> Action
do tag = tag(123)
result : Action
result = do(Edit)
当你定义一个联合类型时,联合类型的每个标签都成为一个定义值。所以当你定义:
type Action = Tick | NoOp
这也定义了:
Tick : Action
NoOp : Action
当联合标签有参数时,它变成了一个"constructor",一个函数:
type Action = Edit Int
Edit : Int -> Action
(这些标签也用作可以与 case
-of
构造匹配的模式。另请参阅 documentation on the website。)