gpt4 book ai didi

haskell - Haskell 迷你语言

转载 作者:行者123 更新时间:2023-12-01 23:51:38 28 4
gpt4 key购买 nike

<分区>

我正在尝试为语言 E 定义一个求值器,坦率地说,我完全不知道如何修复我一直遇到的关于如何定义 eval 类型的所有错误。我已经花了几个小时阅读解释器、单子(monad)并试图找到类似的东西来给我一个基础,但我什么也没找到。这是家庭作业,所以自然不会直接回答。我现在的大问题是没有 Num E 或 Integral E 的实例声明,当我尝试使用 fromInt 和 fromNum 来解决这个问题时,我遇到了其他错误。我也尝试过将定义更改为各种不同的方式,主要问题是 Int 与 E 的类型不匹配。我觉得我遗漏了一些非常基本的东西,但我没能做到缩小范围。如果我在任何特定点上不清楚,我会很乐意回答任何其他问题。如果有任何资源可以提供很好的附加信息,我将非常感谢链接。

data E = IntLit Int
| BoolLit Bool
| Plus E E
| Minus E E
| Multiplies E E
| Divides E E
| Equals E E
deriving (Eq, Show)

eval :: E -> E
--eval = undefined
eval (IntLit a) = IntLit a
eval (BoolLit a) = BoolLit a
eval (Plus a b) = eval a + eval b
eval (Minus a b) = eval a - eval b
eval (Multiplies a b) = eval a * eval b
eval (Divides a b) = eval a `div` eval b
eval (Equals a b) = BoolLit(a == b)

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