在Haskell练习CIS194中实现解释器

时间:2015-05-29 18:49:27

标签: haskell interpreter

我正在从可以找到的材料中找到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正在做什么。

如果有人可以为我澄清提示和示例,我想我可以解决这个问题。

1 个答案:

答案 0 :(得分:3)

“黑匣子”意味着您可以忽略它的实现方式并使用它。 let foo = bar in baz将新变量foo绑定到表达式bar,然后生成baz(可能会提到foo);可能在这里,重点是给定的Haskell表达式应该计算为True - 也就是说,这是您实现的测试用例。