日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Scheme语言 入门语法

發布時間:2023/12/18 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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完全相同的規則。

  • 評估運算符,評估一個過程
  • 從左往右評估操作數
  • 將過程應用于評估的操作數
  • scm> (+ 1 2) 3 scm> (- 10 (/ 6 2)) 7 scm> (modulo 35 4) 3 scm> (even? (quotient 45 2)) #t

    特殊形式

    特殊形式表達式的運算符是特殊形式。特殊形式之所以“特殊”的原因是它們不遵循上一節中所述的三個評估規則。相反,每種特殊形式都遵循其自己的特殊執行規則,例如在評估所有操作數之前的短路。

    以下的一些特殊形式有,if,cond,defined和lambda形式。

    控制結構 Control Structures

    if 表達式

    if特殊形式使我們可以基于預估值來評估兩個表達式之一。if表達式必須有兩個必需的參數和一個可選的第三個參數。

    (if <predicate> <if-true> [if-false])

    第一個操作數是Scheme中的條件或者說預估值(predicate),這個表達式將被解釋為#t或者#f,即真或者假。
    評估if特殊形式的表達式的規則如下:

  • 評估預估值(predicate)。
  • 如果預估值(predicate)返回為真值,則評估并返回<if-true>的值,否則,如果有的話,將評估并返回[if-false]的值。
  • 讓我們來對比一下Scheme中的if表達式與Python中的if聲明:
    Scheme

    scm> (if (> x 3)12)

    Python

    if x > 3: ... 1 ... else: ... 2

    Cond表達式

    使用嵌套的if表達式似乎不是一種處理多條件情況較為實用的方法。我們可以實用cond特殊形式,這是一種通用條件表達式,類似于Python中的多子句if/elif/else條件表達式。

    cond可以接受任意數量的字句作為參數。子句寫為包含兩個表達式的列表:(<p> <e>)。

    每個子句中的第一個表達式是預估值(predicate),子句中的第二個表達式是與其預估值相對應的返回表達式,可選的else子句沒有預估值。

    評估規則如下:

  • 依次評估預估值<p1>, <p2>, <p3>, …, <pn>,直到預估值為真。
  • 如果預估值為真,則求值并返回子句中的相應表達式。
  • 如果所有的預估值都不為真,并且存在else子句,則求值并返回<<>else-expression>。
  • scm> (cond((> x 0) 'positive)((< x 0) 'negative)(else 'zero))

    總結

    以上是生活随笔為你收集整理的Scheme语言 入门语法的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。