Scheme
维基百科,自由的百科全书
| Scheme | |
|---|---|
| 多范型 | |
|
面市時間
|
1970年代 |
|
設計者
|
Guy L. Steele 和 Gerald Jay Sussman |
| 强类型,动态类型 | |
|
主要實作產品
|
PLT Scheme, MIT/GNU Scheme, Scheme 48, Chicken, Gambit, Guile, Bigloo, Chez Scheme, STk, STklos, Larceny, SCM, Kawa |
|
衍生副語言
|
T |
|
啟發語言
|
Lisp, ALGOL |
|
影響語言
|
Common Lisp, JavaScript, Ruby, Dylan |
Scheme,一種多範型的程式語言,它是兩種Lisp主要的方言之一。它是由Guy L. Steele跟Gerald Jay Sussman在1970年代發展出來。現在的標準是R5RS,並且R6RS目前已经被批准了。Scheme也是第一個使用靜態而非動態變數區域的Lisp方言。
Scheme的哲学是:设计计算机语言不应该进行功能(feature)的堆砌,而应该尽可能减少弱点(weakness)和限制(restriction),使剩下的功能显得必要。[1]
目录 |
[编辑] 語言元素
[编辑] 注释
在分號(;)之后一直到行末之間就是注释。 变量是由define跟let或一些其他的函数所定義的。在上层的变量若以define定義的話,則會變成全局变量如下所示:
(define variable value)
以let定义变量的方法如下圖所示
(let ((var1 val1) (var2 val2) ...))
[编辑] 函数
函数定义如下所示:
1 (define (func arg1 arg2 ...) ...) 2 (define func (lambda (arg1 arg2 ...) ...))
在scheme里,函数是第一类对象(first-class object),这代表说可以被当成对象传递,也可以作为函数的返回值。
[编辑] 数据类型
Scheme提供了多个数据类型。如:整数,分数,实数,复数,字符串,符号等等。
[编辑] 條件判斷
(if test then-expr else-expr)
如果test为真,則执行then這個表达式,要不然就执行else這个表达式
(cond (test1 expr1...) (test2 expr2...) ... (else expr))
如果test1為真,則執行expr1。test2為真,執行expr2。要是都不符合的話,就執行expr。
[编辑] Scheme 的 hello, world 程式
sheme 的實作品通常是個 PEPL 的 programming environment 如果要寫成 script,可以使用 guile 直譯器
#! /usr/bin/env guile !# (write "hello, world")
[编辑] 复活节彩蛋
如果在圣诞节那天运行scheme,开启画面就会从巨大蓝红Lambda变成米开朗基罗在梵蒂冈的西斯廷礼拜堂天顶上绘制的,创始纪中的创造亚当(2001年圣诞节测试)[2]。
[编辑] 實作
[编辑] 参见
- ^ http://www.schemers.org/Documents/Standards/R5RS/HTML/r5rs-Z-H-3.html
- ^ 创造亚当 http://artcess.files.wordpress.com/2008/07/creationofadam.jpeg

