我写了代码:
(h::(List.hd acc))::(List.tl acc)
这个操作有效吗? 你觉得怎么样?
答案 0 :(得分:3)
如果我被要求在没有任何其他背景的情况下提高函数定义let f h acc = (h :: List.hd acc) :: List.tl acc
的效率,我会说它已经足够有效了。
不过,我更喜欢使用模式匹配而不是List.hd
和List.tl
。它更安全(你自然会发现必须特别处理acc = []
的情况),并且比两个函数调用稍快:
let f h = function
| [] -> invalid_arg "empty list"
| xs::xss -> (h::xs) :: xss