繁体   English   中英

F#版本的Haskell列表解构

[英]F# version of Haskell's list destructuring

我怎么做F#中的haskell:

f acc (x:y:z:xs) = f (acc-x+y*z) xs
f acc [] = acc

算法有任意性,重要的一点是选择列表的前3个和尾部,因为我需要使用它们的全部和尾部。

我是否必须在F#中使用重复的头部调用强制编写它以弹出xy和z?

编辑:请评论这项技术在haskell中被正式调用的内容,我将把它放在其他人未来搜索的问题标题中,我不记得它。

当模式匹配失败时,您想要做什么? 你可能想要这个:

let rec f acc = function
  | x::y::z::xs -> f (acc-x+y*z) xs
  | _ -> acc

像这样吗?

let rec f acc (x::y::z::xs) = f(acc - x + y * z) xs

但请注意,此函数将始终以MatchFailureException结束,因为它会尝试急切地评估f,直到它到达小于3个元素的尾部

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM