gpt4 book ai didi

haskell - 不在范围 : data constructor 内

转载 作者:行者123 更新时间:2023-12-02 16:05:37 24 4
gpt4 key购买 nike

我用 haskell 编写了一个程序,但我从 ghci 中得到了错误

这是源代码,我构建它,如果我有

p1 :: Prop
p1 = And (Var 'A') (Not (Var 'A'))

它将显示A && ~A,这就是源代码

import Data.List
import Data.Char
data Prop = Const Bool |
Var Char |
Not Prop |
And Prop Prop |
Or Prop Prop |
Imply Prop Prop
deriving Eq
instance Show Prop where
show (Var Char) = show Char
show (Not Prop) = "(~" ++ show Prop ++ ")"
show (And Prop Prop) = "(" ++ show Prop ++ "&&" ++ show Prop ++ ")"
show (Or Prop Prop) = "(" ++ show Prop "||" ++ show Prop ++ ")"
show (Imply Prop Prop) = "(" ++ show Prop "=>" show Prop ++ ")"

我从 ghci 得到了两个主要错误...

Not in scope: data constructor `Char'
Not in scope: data constructor `Prop'

我是haskell的初学者,非常感谢。

最佳答案

以大写字母开头的值名称是为构造函数保留的,例如 VarTrueFalse等。变量必须以小写字母开头。

此外,不能对两个不同的变量使用相同的名称。每次使用它们时,Haskell 如何知道你指的是哪一个?您不能简单地将构造函数的定义用作函数中的模式;您需要为每个字段指定一个单独的名称。

因此,不要写 Var Char,而是写 Var name;而不是 Imply Prop Prop,请编写 Imply p q(或 Imply prop1 prop2),依此类推。

关于haskell - 不在范围 : data constructor 内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10476050/

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