2015-10-04 46 views
0

我試圖測試一小部分代碼,出於某種原因我有一些錯誤。這裏是代碼。這裏tab只是一個返回列表的函數而translate是另一個函數。如何在方案中調用函數

(define p 
    (let ((x (car tab)) (y (cadr tab))) 
    (list translate(x) y))) 

回答

1

函數調用寫爲(f args)其中f是函數和args的參數的空間分隔的序列的名稱。

所以叫tab沒有參數,你會寫(tab),並呼籲translate的說法x,你會寫(translate x)

+0

Thanks !! (這表明我需要休息:)) –

1

+是一種常見的方法在流程,如果你評估它會評估的符號,你會得到的程序對象的實現依賴表示:

+ ; ==> <procedure: +> (or something similar) 

現在+僅僅是一個變量,當評估時,評估爲一個程序。如何調用它只是用括號suround它:

(+) ; ==> 0 

什麼情況是,計劃看到括號,然後計算第一個參數+,併成爲程序<procedure: +>。由於它是一個過程,參數以任何順序被評估,最後過程被應用那些被評估的參數。

如果tab是程序對象,則不能向其應用carcdr。如果它評估爲一對,你可以調用它的結果。同樣,如果你想調用translate的程序x它需要看起來像(translate x)。把它放在一起:

(define p 
    (let* ((tab-result (tab)) 
     (x (car tab-result)) 
     (y (cadr tab-result))) 
    (list (translate x) y))) 
+0

謝謝:)。乾杯 –

相關問題