这里真正的基本问题:我是 Ocaml 的新手,我在尝试操作列表时遇到了问题。我已经阅读了http://caml.inria.fr/pub/docs/manual-ocaml/libref/List.html,不幸的是我仍然感到困惑......我是函数式编程的新手。
如果我有以下功能:
let stoverfl list1 list2 list3 =
match list1 with
|[]->None
|h::list1 -> (*what I want to do goes in here*)
我想看一下list2和list3的第一个元素,比较它们,如果相等,将list3的第一个元素添加到list2,否则不要修改列表。我现在并不真正关心错误检查(即检查列表是否至少有一个元素等)。
我的尝试:
h::list1 -> let cmp1 = hd list2 (*this should return the first elemnt of list2??*)
let cmp2 = hd list3
if(cmp1=cmp2) then
let updlist2 = concat list2 hd list3
let updlist3 = hd list3
(*pass updlist2 and updlist3 instead of list2 and list3 to next function*)
else
(*do nothing; pass list2 and list3 as normal*)
我觉得我做错了……任何建议都将不胜感激!谢谢。