【发布时间】:2020-01-10 13:24:35
【问题描述】:
我正在学习 elm,并试图从 TypeScript 的类型系统中转换我的思维方式。我想知道使用这样的嵌套类型的最佳方法是什么:
type Player = X | O
type Cell = Player | Empty
viewCell: Cell -> string
viewCell cell =
case cell of
X -> "X"
O -> "O"
Empty -> " "
编译器抱怨
The first pattern is trying to match `X` values of type:
Player
But the expression between `case` and `of` is:
Cell
我可以像这样更改 viewCell,但是我不知道如何获取播放器
viewCell: Cell -> String
viewCell cell =
case cell of
Player -> -- how to get the player ??
Empty -> " "
问题不在于显示值本身,而是“解构”嵌套联合类型。我想稍后在这样的地方使用它:
check: (List Cell) -> string
check three =
case three of
[X, X, X] -> "X won"
[O, O, O] -> "O won"
_ -> "still going"
这也给了我来自编译器的类似抱怨
【问题讨论】:
标签: types elm union-types