【发布时间】:2013-01-16 08:11:04
【问题描述】:
这里有一个真正的基本问题:我是 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*)
我觉得我做错了...任何建议将不胜感激! 谢谢。
【问题讨论】: