scheme程式由一系列表示式,定義和語法定義組成。
出現在程式最高層的定義和語法定義可被解釋為宣告,它們是在最高層環境建立繫結,或者改變已有的最高層繫結的值。出現在程式最高層的表示式被解釋為命令,當程式被呼叫或被載入時,它們按順序執行,通常會完成某些初始化的工作。
定義只能出現在程式定義的格式:的最高層或
的開頭。
1. (define
)2. (define()
) 等價於:
(define
(lambda
()))
3. (define
( . )
) ※應為乙個單獨的變數
等價於:
(define
(lambda
))
在程式的最高層,如果變數
已繫結,定義
(define )
的作用在本質上與下面的賦值表示式相同:
(set! )
但如果未被繫結,定義就會在執行賦值之前將
繫結到乙個新的儲存位置。反之,在乙個未被繫結的變數上執行set!是乙個錯誤。
定義可以出現在的開頭,即內部定義。它們的作用域是整個
。
例:
(let
((x5)) '第二行開始為部
(define foo (lambda
(y)(bar x y))) '內部定義
(define bar (lambda
(a b)
(+(* a b) a))) '內部定義
(foo
(+ x 3))) => 45
包含內部定義的
總可以被轉換為完全定價的letrec表示式。
例:
(let
((x5))
(letrec
((foo
(lambda
(y)(bar x y)))
(bar
(lambda
(a b)
(+(* a b) a))))
(foo
(+ x 3))))
語法定義只能出現在程式的最高層。
定義的格式:
(define-syntax
)
Scheme R5RS 3 基本概念
乙個識別符號可以命名乙個語法型別,或命名乙個值的儲存位置.命名某語法型別的識別符號被稱為語法關鍵字,也就是說它與該語法繫結在一起.命名某儲存位置的識別符號被稱為變數,即它與該儲存位置繫結在一起.某些表示式型別可用於建立新的語法種類,並將語法關鍵字繫結到新語法.另一些表示式型別可用於建立新的儲存位置,...
5 Go語言基礎 程式結構
名字分類 函式名 變數名 常量名 型別名 語句標號 包名 名字命名規則 unicode字母或下劃線開頭,後面跟任意數量的字母數字下劃線。大小寫字母是不同的名字。包級名字 在函式外部定義的名字交配包級名字。在函式外部定義的函式叫包級函式,包級函式名也是包級名字。可匯出 外部可見性 乙個包級名字首字母大...
雨落C 小課堂 C 程式結構(5)
其實資料型別,指的是一種規範 一種標準,我們說int整型,指的是乙個能夠表示整數,且資料範圍在 2147483648至2147483648之間的一種規範,並沒有具體告訴程式怎樣來儲存這樣的資料。變數就是提供乙個具名的 可供程式操作的儲存空間,可以理解為乙個容器,宣告變數的格式如下 型別說明符 變數名...