我正在从可以找到的材料中找到haskell here。我开始homework 3,其中的目标是为一个简单的语言写一个翻译,但我陷入了第一个练习:
在我们开始评估表达式和语句之前 我们需要一些方法来存储和查找变量的状态。我们 将
State
定义为类型String -> Int
的函数。这样做 很容易查找变量的值;查找价值"A"
中的state
,我们只需致电state "A"
。每当我们分配一个变量时, 我们想要更新程序State
。实施以下内容 功能:
extend :: State -> String -> Int -> State
提示:您可以将输入状态用作其他变量的黑盒子 而不是你指定的那个。
示例:
let st’ = extend st "A" 5
in st’ "A" == 5
我不知道我应该在这里做什么。在提示中我不确定“黑匣子”是什么意思。在示例中,我得到st'
是一个州,但我不确定我得到in st' "A" == 5
正在做什么。
如果有人可以为我澄清提示和示例,我想我可以解决这个问题。
答案 0 :(得分:3)
“黑匣子”意味着您可以忽略它的实现方式并使用它。 let foo = bar in baz
将新变量foo
绑定到表达式bar
,然后生成baz
(可能会提到foo
);可能在这里,重点是给定的Haskell表达式应该计算为True
- 也就是说,这是您实现的测试用例。