F#版本的Haskell列表解构

Jim*_*ffa 5 .net f# haskell functional-programming

我怎么做F#中的haskell:

f acc (x:y:z:xs) = f (acc-x+y*z) xs
f acc [] = acc
Run Code Online (Sandbox Code Playgroud)

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

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

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

Dan*_*iel 12

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

let rec f acc = function
  | x::y::z::xs -> f (acc-x+y*z) xs
  | _ -> acc
Run Code Online (Sandbox Code Playgroud)