gpt4 book ai didi

haskell - 如何在 Haskell 中显示用户定义的数据类型

转载 作者:行者123 更新时间:2023-12-05 08:55:03 24 4
gpt4 key购买 nike

所以我试图定义我自己的数据类型,它递归地表示自然数,如下所示:

 data Nat = Zero | Succ Nat

此功能正常工作:

 showNat :: Nat -> String
showNat Zero = "Zero"
showNat (Succ k) = "Succ " ++ (showNat k)

但是,我不想每次要将 Nat 输出到屏幕时都必须调用它。我试过这个:

  instance Show Nat where
show Zero = "Zero"
show (Succ k) = "Succ " ++ Main.show k

但它返回一个错误:

• No explicit implementation for
either ‘showsPrec’ or ‘Prelude.show’
• In the instance declaration for ‘Show Nat’
|
| > instance Show Nat where | ^^^^^^^^

如何正确编写“显示”的实例?

最佳答案

实例化似乎过于复杂。这足够了:

data Nat = Zero | Succ Nat

showNat :: Nat -> String
showNat Zero = "Zero"
showNat (Succ k) = "Succ " ++ (showNat k)

instance Show Nat where
show = showNat

或者,人们可能喜欢使用使用deriving自动生成的show:

data Nat = Zero | Succ Nat deriving (Show)

在这种情况下,nats 将显示为 Succ (Succ Zero),而不是原始代码中预期的 Succ Succ Zero

关于haskell - 如何在 Haskell 中显示用户定义的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47269879/

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