什么是 Elm 相当于 Haskell's Show?

alt*_*ern 1 haskell elm

我在 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 的声明?

bdu*_*kes 5

不,Elm 没有这个功能。您需要实现自己的toString功能:

binToString : Bin -> String
binToString bin =
    binToDec bin
    |> String.fromInt
Run Code Online (Sandbox Code Playgroud)