类型不匹配 OCaml?

伊利亚

我有一个问题,OCaml 认为我的函数as参数是unit lists,但它们必须分别'a liststring该函数必须输出由给定分隔符分隔的列表元素。

结果必须是一个字符串,输入如下:“This-is-label”

PS我知道match,但是我不能用

let rec function1 a s =
    if a = [] then failwith "Empty list" else 
    if List.tl a = [] then List.hd a else
    if List.tl a != [] then List.hd a; s; function1 List.tl a s
    ;;

function1 ["This"; "is"; "label"] "-";;
杰弗里·斯科菲尔德

您似乎希望这个表达式是一个字符串:

List.hd a; s; function1 List.tl a s

但是,;运算符的含义是对左侧的表达式求值,然后忽略其值。(如果类型不是单位,它也被认为是错误的形式。)然后计算右边的表达式,它是表达式的值。

所以这个表达式说要评估List.hd a,然后忘记这个值。然后评估s,然后忘记值。然后评估递归调用。

所以第一个问题就是把这些东西组装成一个字符串。

^运算符连接两个字符串。所以这样的事情更接近你想要的:

List.hd a ^ s ^ function1 (List.tl a) s

请注意,您需要将调用括起来List.tl否则它看起来像两个单独的参数function1

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章