您的代碼
(defun
定義一個函數,
ordered
命名爲 「有序」,
(x y)
這預計將被稱爲 「x」 和「兩個參數y「在其主體中,於是在收到參數(即ha ving被稱爲兩個值,例如(ordered 49 28)
)
(if (< x y)
它將對它們進行比較,並且如果所述第一比第二較小時,會產生
(list x y)
在列表重新包裝(相同的兩個值即'(49 28)
); 或否則,如果第一個值是不小於第二個,
(list y x)))
它會產生含有第二值第一列表中,然後將第一個參數值(即'(28 49)
)。
因此,在這種情況下,比較和?
讀這段代碼一般,我們可以說,如果它收到小數爲第一參數,它會產生較小數量第一和更大數量第二,在結果列表;
並且如果它接收到的較小號碼作爲其秒參數時,會產生較小的數量的第一和較大數目的第二,在結果列表中。
回想一下,我們可以看到,這種描述可以進一步簡化爲一個簡單的陳述:它總是會在結果列表中產生______數字,而______秒數字。
另一種方法來攻擊這個,就是寫下通過定義創建功能,
(lambda (x y) (if (< x y) (list x y) (list y x)))
然後象徵性地跟隨其應用:
( (lambda (x y) (if (< x y) (list x y) (list y x)))
49
28 )
==
(let ( (x 49)
(y 28)
)
(if (< x y) (list x y) (list y x)))
==
(let ( (x 49)
(y 28)
)
(if (< 49 28) (list x y) (list y x)))
==
(let ( (x 49)
(y 28)
)
(if FALSE (list x y) (list y x)))
==
(let ( (x 49)
(y 28)
)
(list y x) )
==
(let ( (x 49)
(y 28)
)
(list 28 49))
==
(list 28 49)
歡迎堆棧溢出!你看到的結果對我來說是有意義的 - 你能否包括你正在嘗試完成的練習? –
我期待你得到的答案。那是'有序'應該做的,不是? – Svante
練習是如果使用比較子句和兩個結果子句,一個用於比較true和一個用於比較nil(false)。答案1是可以的,因爲28小於49.答案2並不是因爲49不小於28而產生零。結果條款2應該工作併產生(49 28)從未發生過的事情。 – klk2ptx