此表达式的类型为 'a 列表,但表达式应为 'b * 'c 类型
This expression has type 'a list but an expression was expected of type 'b * 'c
我不明白为什么会收到此错误消息,很高兴能得到启发
let write c v d =
let rec new_dict=function
| []->(k, v)
| (key,value)::q-> if key=k
then new_dict (q)
else (key,value)::new_dict (q)
in new_dict (d) ;;
这里我的目标是创建一个新字典,其中键 'c' 将获得一个新值,或者如果该键最初不在字典中则添加该键。
抱歉,如果我的错误有点明显,我是 OcamL 的新手。
谢谢。
我们只考虑 new_dict
,并进行一些格式清理。
let rec new_dict =
function
| [] -> (k, v)
| (key, value)::q ->
if key = k then
new_dict q
else
(key, value) :: new_dict q
如果列表为空,它returns 是一个元组。否则它 returns 一个列表。注意 ::
列表构造函数。
也许你的意思是:
let rec new_dict =
function
| [] -> [(k, v)]
| (key, value)::q ->
if key = k then
new_dict q
else
(key, value) :: new_dict q
我不明白为什么会收到此错误消息,很高兴能得到启发
let write c v d =
let rec new_dict=function
| []->(k, v)
| (key,value)::q-> if key=k
then new_dict (q)
else (key,value)::new_dict (q)
in new_dict (d) ;;
这里我的目标是创建一个新字典,其中键 'c' 将获得一个新值,或者如果该键最初不在字典中则添加该键。
抱歉,如果我的错误有点明显,我是 OcamL 的新手。
谢谢。
我们只考虑 new_dict
,并进行一些格式清理。
let rec new_dict =
function
| [] -> (k, v)
| (key, value)::q ->
if key = k then
new_dict q
else
(key, value) :: new_dict q
如果列表为空,它returns 是一个元组。否则它 returns 一个列表。注意 ::
列表构造函数。
也许你的意思是:
let rec new_dict =
function
| [] -> [(k, v)]
| (key, value)::q ->
if key = k then
new_dict q
else
(key, value) :: new_dict q