簡體   English   中英

計划清單的總和

[英]sum of a list in scheme

我是函數式編程和方案語言的初學者。

我找到了一種建立列表總和的方法:

(define (sum lst)
  (if (empty? lst)
      0
      (+ (car lst) (sum (cdr lst)))))

(sum (list 1 2 3))

我的問題是:有沒有辦法建立一個列表的總和沒有像sum這樣的額外函數,只需使用“+”函數,如下所示:

(+ 1 2 3)

您可以apply參數列表apply函數。 所以在這種情況下你可以:

> (apply + (list 1 2 3))
6

MIT / Gnu-Scheme的參考文獻說, +需要任意數量的參數。 我相信,這個標准。

一般來說:

(define (foo . args) ....)

使用像(foo)(foo x)(foo xy)(foo xyz) ,.... foo里面,args將是'()(x)(xy)(xyz)

參見SICP中的練習2.20或MIT / Scheme Reference 9.2 chap 2.1

這意味着:

對於算術過程+*-/您的過程不是必需的,因為它們是為任意數量的參數定義的,包括零和一。 對於其他一些內置程序也是如此。 對於您自己的程序,您可以使用點尾符號。

您可以從GNU-Pages下載MIT / Scheme Reference。 我認為它有助於Scheme的所有實現,因為描述了標准的擴展。 大多數部件都易於閱讀。

Common Lisp程序員應該查看[ http://www.gigamonkeys.com/book/functions.html]

在這里你必須使用&rest而不是>。<(defun +(&rest numbers)...)

兩種lisp方言都知道默認,可選和休息參數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM