OCaml函数报错‘Error: Unbound value oddList’求排查及实现修正
OCaml oddList函数错误排查与修正
错误分析
你的代码存在以下语法错误,导致出现Unbound value相关报错:
- 标准库模块名大小写错误:OCaml标准库中的列表操作模块是大写开头的
List,你使用了小写的list.hd、list.tl,同时未给length添加List.前缀,编译器无法识别这些预定义函数。 - 变量名拼写错误:将定义好的
fst变量误写为fist,引发未绑定变量的错误。
修正后的代码
let rec oddList l = if l = [] then [] else let fst = List.hd l in let rest = List.tl l in if List.length fst mod 2 = 0 then fst :: oddList rest else (fst @ fst) :: oddList rest
验证结果
运行测试输入:
oddList [[]; [1];[1;2];[1;2;3];[];[5;4;3;2;1]]
将得到预期输出:
[[]; [1; 1]; [1; 2]; [1; 2; 3; 1; 2; 3]; []; [5; 4; 3; 2; 1; 5; 4; 3; 2; 1]]
内容的提问来源于stack exchange,提问作者user21450992
相关产品推荐
相关产品推荐

