gpt4 book ai didi

haskell - 类型类声明类型不匹配

转载 作者:行者123 更新时间:2023-12-02 08:21:11 26 4
gpt4 key购买 nike

我试图让我的 Cell 类型成为 Show 类型类的成员。 show a 行有问题。我如何确保 a 是那个展示案例中的 Char ?我希望语句的顺序只会让 fallthrough 处理它,但事实并非如此。

data Cell = Solid | Blank | Char

instance Show (Cell) where
show Solid = "X"
show Blank = "_";
show a = [a]

main = print $ show Solid

最佳答案

你不能确定 aChar 类型的值因为事实并非如此。 a将始终是 Cell 类型的值,具体来说就是值 Char (与 Char 类型无关)。

你似乎想要的是Cell的第三个构造函数包含类型为 Char 的值.为此,您的构造函数需要一个参数:

data Cell = Solid | Blank | CharCell Char

instance Show (Cell) where
show Solid = "X"
show Blank = "_"
show (CharCell a) = [a]

CharCell a如果构造函数 CharCell 则大小写匹配已被使用和a将用作 CharCell 的值的参数(因此具有类型 Char,因为这是 CharCell 的参数类型)。

关于haskell - 类型类声明类型不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36959896/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com