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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Scheme语言 入门语法

發(fā)布時(shí)間:2023/12/18 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Scheme语言 入门语法 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Scheme簡(jiǎn)介

Scheme是1970年代著名的函數(shù)式編程語(yǔ)言。是Lisp(LISt Processing)語(yǔ)言的一門變式。大多數(shù)人想到Scheme首先是其獨(dú)特的語(yǔ)法,因?yàn)槠洳捎们熬Y表示法和嵌套括號(hào),并且具有一流的函數(shù)和優(yōu)化的尾遞歸的特征,在當(dāng)時(shí)屬于較為新穎的特征。

表達(dá) Expression

原子表達(dá)式 Atomic Expression

就像和Python一樣,Scheme原子表達(dá)式或者說(shuō)基本表達(dá)式只要一個(gè)簡(jiǎn)單的步驟來(lái)評(píng)估。表達(dá)式包括數(shù)字,布爾型,符號(hào)。

scm> 1234 ; integer 1234 scm> 123.4 ; real number 123.4

符號(hào) Symbols

符號(hào)的作用像Python中的name,但是也不完全是。準(zhǔn)確來(lái)說(shuō),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也被認(rèn)為是False值。

scm> #t #t scm> #f #f

調(diào)用表達(dá)式 Call Expression

與Python中一樣,Scheme調(diào)用表達(dá)式中的運(yùn)算符位于所有的操作數(shù)之前。但是與Python不同的事,運(yùn)算符在括號(hào)內(nèi),并且操作數(shù)使用空格分隔,而不用逗號(hào)分隔。但是,對(duì)于Scheme調(diào)用表達(dá)式的求值遵循與Python完全相同的規(guī)則。

  • 評(píng)估運(yùn)算符,評(píng)估一個(gè)過(guò)程
  • 從左往右評(píng)估操作數(shù)
  • 將過(guò)程應(yīng)用于評(píng)估的操作數(shù)
  • scm> (+ 1 2) 3 scm> (- 10 (/ 6 2)) 7 scm> (modulo 35 4) 3 scm> (even? (quotient 45 2)) #t

    特殊形式

    特殊形式表達(dá)式的運(yùn)算符是特殊形式。特殊形式之所以“特殊”的原因是它們不遵循上一節(jié)中所述的三個(gè)評(píng)估規(guī)則。相反,每種特殊形式都遵循其自己的特殊執(zhí)行規(guī)則,例如在評(píng)估所有操作數(shù)之前的短路。

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

    控制結(jié)構(gòu) Control Structures

    if 表達(dá)式

    if特殊形式使我們可以基于預(yù)估值來(lái)評(píng)估兩個(gè)表達(dá)式之一。if表達(dá)式必須有兩個(gè)必需的參數(shù)和一個(gè)可選的第三個(gè)參數(shù)。

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

    第一個(gè)操作數(shù)是Scheme中的條件或者說(shuō)預(yù)估值(predicate),這個(gè)表達(dá)式將被解釋為#t或者#f,即真或者假。
    評(píng)估if特殊形式的表達(dá)式的規(guī)則如下:

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

    scm> (if (> x 3)12)

    Python

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

    Cond表達(dá)式

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

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

    每個(gè)子句中的第一個(gè)表達(dá)式是預(yù)估值(predicate),子句中的第二個(gè)表達(dá)式是與其預(yù)估值相對(duì)應(yīng)的返回表達(dá)式,可選的else子句沒(méi)有預(yù)估值。

    評(píng)估規(guī)則如下:

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

    總結(jié)

    以上是生活随笔為你收集整理的Scheme语言 入门语法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。