在该站点上提供的OCaml教程的答案中,一些解决方案(包括用于消除列表元素的连续重复项的解决方案)是这样编写的:
let rec compress = function
| a :: (b :: _ as t) -> if a = b then compress t else a :: compress t
| smaller -> smaller;;
该行的意义是a :: (b:: _ as t)
什么?为什么我不能这样写呢a :: b :: t
?
将t
在b :: _ as t
必然b :: _
。因此含义是不同的。如果您使用模式a :: b :: t
,则需要说compress (b :: t)
,这有点不优雅,效率也略低。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句