gpt4 book ai didi

haskell - 实例声明 Haskell

转载 作者:行者123 更新时间:2023-12-02 04:32:09 25 4
gpt4 key购买 nike

我的代码是这样的:

type Code = [Inst]

data Inst = PUSH Int
| PUSHV Name
| POP Name
| DO Op
| JUMP Label
| JUMPZ Label
| LABEL Label
deriving Show

doJump :: Inst -> Code -> Code
doJump l c = case (elemIndex l c) of
Just n -> drop (n+1) c
Nothing -> c

GHC 返回给我这个错误,这让我完全陷入困境......我想做的是从特定元素出现后的点返回列表。

No instance for (Eq Inst) arising from a use of `elemIndex'
Possible fix: add an instance declaration for (Eq Inst)
In the expression: (elemIndex l c)
In the expression:
case (elemIndex l c) of {
Just n -> drop (n + 1) c
Nothing -> c }
In an equation for `doJump':
doJump l c
= case (elemIndex l c) of {
Just n -> drop (n + 1) c
Nothing -> c }

有什么想法吗?

最佳答案

elemIndex 要求列表中的元素可以相等比较,因此您需要为 Eq Inst 添加一个实例。

使用deriving Eq自动生成,例如:

data Inst = PUSH Int
| PUSHV Name
| POP Name
| DO Op
| JUMP Label
| JUMPZ Label
| LABEL Label
deriving (Show, Eq)

关于haskell - 实例声明 Haskell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22786840/

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