Haskell:为字符串

时间:2017-01-28 14:03:14

标签: haskell

我的任务在于模仿Haskell中命令式编程语言的特性。现在我正在努力为字符串赋值。关键是我必须使用Env和Sigma类型。 Env将一个String(变量名)分配给Location Loc。 Sigma将位置分配给特定值。这是代码:

type Loc = Int                 --Loc for Location
type Env =  String -> Loc 
type Sigma = Loc -> Int

assign :: String -> Int -> Env -> Sigma -> Sigma
assign name value env sig = \input -> ??

现在我不知道如何在我的程序的assign函数中执行此操作。该函数应该在函数env中存储String名称和Location loc,并且还在函数sig中存储相同的位置loc和Value val,它必须由整个函数'assign'返回。

用例如测试它env = \"test"->42sig= \42->6(sig和env仅暂时用于测试用例),assign "x" 45 env sig然后sig (env "x")应该返回45.我不知道如何管理它将位置分配给env和sig。你能帮助我并告诉我应该做些什么吗?

1 个答案:

答案 0 :(得分:2)

提示:

您需要先将input位置与name的位置进行比较,即env name

当它们相等时,您知道要返回的新值。

如果这些位置不同,您可以访问旧版Sigma以检索input位置的旧值。