Scheme语言 入门语法
Scheme簡介
Scheme是1970年代著名的函數式編程語言。是Lisp(LISt Processing)語言的一門變式。大多數人想到Scheme首先是其獨特的語法,因為其采用前綴表示法和嵌套括號,并且具有一流的函數和優化的尾遞歸的特征,在當時屬于較為新穎的特征。
表達 Expression
原子表達式 Atomic Expression
就像和Python一樣,Scheme原子表達式或者說基本表達式只要一個簡單的步驟來評估。表達式包括數字,布爾型,符號。
scm> 1234 ; integer 1234 scm> 123.4 ; real number 123.4符號 Symbols
符號的作用像Python中的name,但是也不完全是。準確來說,Scheme中的symbol是一種值的類型。
scm> quotient ; A name bound to a built-in procedure #[quotient] scm> 'quotient ; An expression that evaluates to a symbol quotient scm> 'hello-world! hello-world! Booleans布爾型 Booleans
在Scheme中,除了#f這一特殊布爾值以外的所有值都解釋為True值,即真值,不像Python,0也被認為是False值。
scm> #t #t scm> #f #f調用表達式 Call Expression
與Python中一樣,Scheme調用表達式中的運算符位于所有的操作數之前。但是與Python不同的事,運算符在括號內,并且操作數使用空格分隔,而不用逗號分隔。但是,對于Scheme調用表達式的求值遵循與Python完全相同的規則。
特殊形式
特殊形式表達式的運算符是特殊形式。特殊形式之所以“特殊”的原因是它們不遵循上一節中所述的三個評估規則。相反,每種特殊形式都遵循其自己的特殊執行規則,例如在評估所有操作數之前的短路。
以下的一些特殊形式有,if,cond,defined和lambda形式。
控制結構 Control Structures
if 表達式
if特殊形式使我們可以基于預估值來評估兩個表達式之一。if表達式必須有兩個必需的參數和一個可選的第三個參數。
(if <predicate> <if-true> [if-false])第一個操作數是Scheme中的條件或者說預估值(predicate),這個表達式將被解釋為#t或者#f,即真或者假。
評估if特殊形式的表達式的規則如下:
讓我們來對比一下Scheme中的if表達式與Python中的if聲明:
Scheme
Python
if x > 3: ... 1 ... else: ... 2Cond表達式
使用嵌套的if表達式似乎不是一種處理多條件情況較為實用的方法。我們可以實用cond特殊形式,這是一種通用條件表達式,類似于Python中的多子句if/elif/else條件表達式。
cond可以接受任意數量的字句作為參數。子句寫為包含兩個表達式的列表:(<p> <e>)。
每個子句中的第一個表達式是預估值(predicate),子句中的第二個表達式是與其預估值相對應的返回表達式,可選的else子句沒有預估值。
評估規則如下:
總結
以上是生活随笔為你收集整理的Scheme语言 入门语法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android5.1开机LOGO与开机动
- 下一篇: p3369跳表代替平衡树