S-表達

Scheme 中的表示式將被執行。一個 S 表示式,因為它通常被稱為以 ( 開頭並以 ) 結束。表示式的第一個成員是要執行的內容。表示式的以下成員是在表示式求值期間將傳送到表示式的引數。

例如新增數字:

(+ 1 2 3)

在這種情況下,+是一個帶有多個引數的 add 函式的符號。123 被髮送到+函式。

S-Expression 可以包含 S-Expressions 作為引數,如以下示例所示:

(if (< x y)
  x
  y)

哪個可以讀作好像 x 小於 y 返回 x 否則返回 y。在這個例子中,我們評估條件表示式,根據解析的值,將返回 x 或 y。可以對此進行評估

(if #t x y)
x
(if #f x y)
y

初學者的一個不太明顯的例子是將 S 表示式作為 S 表示式的第一個成員的一部分。這樣,我們可以通過更改將被呼叫的函式來更改方法的行為,而無需建立具有相同引數的分支。這是一個表示式的快速示例,如果 x 低於 y,則可以新增或減去數字。

((if (< x y) + -) 
  1 2 3)

如果 x 低於 y,表示式將被評估為:

(+ 1 2 3)
6

除此以外

(- 1 2 3)
-4

正如你所看到的,Scheme 允許程式設計師構建複雜的程式碼片段,同時為程式設計師提供防止重複程式碼的工具。在其他語言中,我們可以看到相同的例子:

(if(<xy)(+ 1 2 3)( - 1 2 3))

這種方法的問題在於我們複製了大量程式碼,而唯一改變的是被呼叫的方法。這個例子相當簡單,但是在更多條件下我們可以看到許多類似的行重複。