我試圖測試一小部分代碼,出於某種原因我有一些錯誤。這裏是代碼。這裏tab
只是一個返回列表的函數而translate
是另一個函數。如何在方案中調用函數
(define p
(let ((x (car tab)) (y (cadr tab)))
(list translate(x) y)))
我試圖測試一小部分代碼,出於某種原因我有一些錯誤。這裏是代碼。這裏tab
只是一個返回列表的函數而translate
是另一個函數。如何在方案中調用函數
(define p
(let ((x (car tab)) (y (cadr tab)))
(list translate(x) y)))
函數調用寫爲(f args)
其中f
是函數和args
的參數的空間分隔的序列的名稱。
所以叫tab
沒有參數,你會寫(tab)
,並呼籲translate
的說法x
,你會寫(translate x)
。
+
是一種常見的方法在流程,如果你評估它會評估的符號,你會得到的程序對象的實現依賴表示:
+ ; ==> <procedure: +> (or something similar)
現在+
僅僅是一個變量,當評估時,評估爲一個程序。如何調用它只是用括號suround它:
(+) ; ==> 0
什麼情況是,計劃看到括號,然後計算第一個參數+
,併成爲程序<procedure: +>
。由於它是一個過程,參數以任何順序被評估,最後過程被應用那些被評估的參數。
如果tab
是程序對象,則不能向其應用car
或cdr
。如果它評估爲一對,你可以調用它的結果。同樣,如果你想調用translate
的程序x
它需要看起來像(translate x)
。把它放在一起:
(define p
(let* ((tab-result (tab))
(x (car tab-result))
(y (cadr tab-result)))
(list (translate x) y)))
謝謝:)。乾杯 –
Thanks !! (這表明我需要休息:)) –