我在 Elm 中实现了我的自定义类型:
type Bin = BEmpty | One Bin | Zero Bin
当我在String类似于以下的上下文中使用它时,我希望它是可显示的:
main =
Html.p (text bin)
Run Code Online (Sandbox Code Playgroud)
例如,如果定义了以下内容:
bin : Bin
bin = One (One (Zero BEmpty))
Run Code Online (Sandbox Code Playgroud)
如果我尝试Show如下定义实例:
instance Show Bin
show bin = show (binToDec bin)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
-- NAMING ERROR --------------------------------------------------- src/Main.elm
I cannot find a `Bin` variant:
19| instance Show Bin
^^^
These names seem close though:
EQ
Err
GT
L
Run Code Online (Sandbox Code Playgroud)
instance Show Bin where在 Elm 中是否有等效于 Haskell 的声明?
不,Elm 没有这个功能。您需要实现自己的toString功能:
binToString : Bin -> String
binToString bin =
binToDec bin
|> String.fromInt
Run Code Online (Sandbox Code Playgroud)