如何在Haskell中编写具有初始条件的递归函数?

vik*_*ata 1 recursion haskell definition

在F#我可以这样定义:

let rec sum = function
| [] -> 0
| x::xs -> x + sum xs
Run Code Online (Sandbox Code Playgroud)

看起来很方便.在Haskell有通信吗?

Dan*_*ner 7

假设您喜欢的功能是"我不必重复名称sum",LambdaCase扩展程序启用此功能:

{-# LANGUAGE LambdaCase #-}

module CaseExample where
import Prelude hiding (sum)

sum = \case
    [] -> 0
    x:xs -> x + sum xs
Run Code Online (Sandbox Code Playgroud)

否则,没有扩展的语法是

sum [] = 0
sum (x:xs) = x + sum xs
Run Code Online (Sandbox Code Playgroud)