-6

我写了代码:

(h::(List.hd acc))::(List.tl acc)

这个操作有效吗?你怎么看 ?

4

1 回答 1

3

如果让我在没有任何其他背景的情况下提高函数定义的效率let f h acc = (h :: List.hd acc) :: List.tl acc,我会说它已经足够高效了。

不过,我更喜欢使用模式匹配而不是List.hdand List.tl。它更安全(你自然会发现这种情况acc = []必须特殊处理),并且比两个函数调用稍微快一点:

let f h = function
  | [] -> invalid_arg "empty list"
  | xs::xss -> (h::xs) :: xss
于 2013-10-30T01:46:23.743 回答