为什么我的SML代码中出现这些错误?

问题描述

我正在为标准ML创建用于标准ML的解释器,但我似乎无法克服这个问题。

我在函数eval中有此条件:

| eval (rho,SetExp (name,value)) =
    (case rhoContains rho name of
        true    => rhoSet rho name value
    |   false   => globalSet (name,value))

和这些帮助功能:

fun rhoSet [] key value = [(key,value)]
  | rhoSet ((elt as (k,v)) :: tail) key value =
        if key = k then (key,value) :: tail else elt :: rhoSet tail key value

fun rhoContains rho name =
    case rhoGet rho name of SOME _ => true | NONE => false

fun globalSet key value =
    let fun f [] = [(key,value)]
        | f ((k,v)::tail) = if k = key then (k,value)::tail else (k,v)::f tail
    in globals := f (!globals) end

尝试运行此操作会给我以下错误:

eval.sml:61: error: Clauses in case have different types.
Clause 1: true => rhoSet rho name value : bool -> (string * expression) list
Clause 2: false => globalSet (name,value) : bool -> int -> unit
Reason:
    Can't unify (string * expression) list to int -> unit
        (Incompatible types)

我不确定这是什么问题,我们将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...