楓葉/用楓葉程式設計
楓葉既是一種程式語言,也是一種數學系統。
楓葉作為一種程式語言,具有面向物件語言的幾個共同屬性。特別地,變數和過程引數可以包含任何有效的楓葉物件。原則上,楓葉沒有宣告,它由函式和使用者來執行型別限制。
楓葉是一種程序式程式設計語言。它還包含許多函數語言程式設計結構。楓葉是一種動態型別、解釋型語言。即不像 C 和 Pascal 那樣是強型別語言。不需要宣告。
所有楓葉程式都是函式,因為它們被賦予作為引數的值或物件的名稱,並返回一個值作為結果。
在楓葉中,函式可以像數字或表示式一樣被分配給變數。
楓葉函式定義的一種形式是將一個程式設計變數分配給一個proc表示式。
楓葉程式中的每個變數要麼是形式引數、區域性變數,要麼是全域性變數。
只有兩種可能性:要麼一個變數是它立即出現的那個程式的區域性變數,要麼它是整個楓葉會話的全域性變數。區域性變數僅是它們自己的程式的區域性變數。它們在其他程式中是未知的,即使是在定義它們的程式中出現的程式中也是如此。
如果你沒有宣告你的變數是全域性變數還是區域性變數,楓葉會為你決定。如果一個變量出現在顯式賦值的左側,那麼楓葉假定你打算將該變數設為區域性變數。否則,楓葉假定該變數對整個會話是全域性的。
楓葉將引數評估為零級,區域性變數評估為一級,全域性變數完全評估,除了最後一個名稱評估。
標準的楓葉行為是命令不會直接影響傳遞給它的引數的值。
從各種計算機語言使用的傳統引數傳遞機制來看,楓葉的引數傳遞可以被稱為按評估的名稱呼叫。
楓葉在呼叫過程之前會評估引數。一旦楓葉評估了引數,它就會用實際引數替換所有過程形式引數的出現。然後楓葉呼叫過程。
當你呼叫一個過程時,楓葉會根據呼叫發生的上下文適當地評估引數。
型別檢查帶來的輕微效能損失通常是值得的,因為它可以減少程式設計或使用錯誤。
楓葉每次呼叫過程時都會建立過程的區域性變數。因此,區域性變數對於過程的特定呼叫是區域性的。
區域性變數是在過程執行期間才使用的程式設計變數,之後會被丟棄。
區域性變數是在過程內部的臨時儲存位置。
全域性變數可以在楓葉中的任何過程內部以及互動級別使用。
楓葉程式中的引數和區域性變數不受別名影響。
楓葉中的函式運算子是過程的一種特殊形式。函式運算子使用箭頭運算子->編寫
>f := x -> 3*x + 5;
>f(2);
>g:=(u,v,w)->1/u+exp(u+v)+(u-v+w)^2;
>g(2*a,b,3*c);
即,函式運算子使用以下符號編寫
其中vars是名稱(變數),或括號之間的名稱序列(對於兩個或多個變數),result是表示式(函式作用於變數vars的結果)。