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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Scheme语言基础之数据类型

發布時間:2023/12/20 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Scheme语言基础之数据类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Scheme語言是LISP語言的一個方言,是一門小巧的語言,在科學研究領域有重要的作用,機器學習,人工智能都是Scheme派上用場的地方,使用Scheme可以讓程序員不用為了語法而分心,可以專注于程序的算法邏輯上。學習Scheme的人應該都是從SICP開始的,這本書沒有過多講解Scheme的語法,而是集中介紹Scheme中核心的數據結構和如何用Scheme的思想來表達出自己想要的程序,這方面應該另外通過其他途徑獲取。

一下就介紹一下Scheme的基本用法:

Scheme是一門動態類型的語言,如pyrhon,perl一樣,可以寫成腳本,通常Scheme腳本都是以

#!/usr/local/bin/guile -s

!#

開始,Scheme程序可以在guile下編譯,調試。

定義變量使用的語法行如

(define 變量名 值)

例如(define x 3)則定義了變量x,綁定到3。而如果想更改x的值可以使用set!,

(set! x 6)

當然你不僅可以把其他整數值賦予x,同樣也可以用有理數,字符,字符串賦值,應為Scheme是動態類型,所以賦值的類型就決定了x的類型。

Scheme的數據類型包含了數學中的基本類型,因為Scheme是由數學家創造的,所以跟數學很接近。

boolean類型的:#f和#t,對這個類型的操作只有 not,例如

(not #f) 返回#t

數字型包括整形,有理型,實數和復數,進制的表示形式為#x,#o,#b,#d分別為十六進制,八進制,二進制,十進制,可以發現Scheme中大量使用#。

Scheme語言中的字符型數據均以符號組合 "#\" 開始,表示單個字符。特殊字符有:#\space 表示空格符和 #\newline 表示換行符。

Scheme中定義了符號變量,以’開始,例如’hello就定義了符號hello,感覺符號變量就像C++中的字符串字面量。對于字符串,則有很多已經定義好的過程可以使用,例如string-length返回字符串的長度,string-set!設置字符,string-ref返回字符的引用,

(fefine str "hello"),(string-length str),(string-set! str 2 #\a),(string-ref str 2),則分別就是取str的長度,設置第3個字符為a,返回第3個字符的引用。

點對是Scheme中最重要的結構了,也是SCIP中重點介紹的,應為由點對可以組合成任意復雜的數據結構。點對由cons定義,如(cons 1 2)則生成(1 , 2),取得和設置第一個元素的過程是car,set-car!,同理,若操作第二個元素,則使用cdr,set-cdr!.

說了點對后就應該說list了,list是用的最多的了,定義列表為(define l (list 1 2 3)),列表由形如string一樣的操作過程,即list-length,list-ref,list-set!.列表是由點對形成的,前面定義的(1 2 3)也可以表達為(define l (cons 1 (cons 2 (cons 3 '() ))),’()代表NULL。

列表過后就是向量了,定義向量的方式和列表一樣,只需將list換成vector即可,(define v (vector 1 2 3)),表示為#(1 2 3),操作向量的過程也和列表類似。向量的索引也是從0開始的。

有了數據結構了,就需要一些過程來輔助數據結構的使用,C語言中有if,Scheme中判斷是用類型名加問號再加相應的常量或變量構成,

(char? #\g)就判斷字符g是否為字符類型。其他類型還有boolean,integer,real,number,rational,symbol,null.

eq?,eqv?和equal?是三個判斷兩個參數是否相等的過程,其中eq?和eqv?的功能基本是相同的.eq?是判斷兩個參數是否指向同一個對象,equal?則是判斷兩個對象是否具有相同的結構并且結構中的內容是否相同,它用eq?來比較結構中成員的數量;equal?多用來判斷點對,列表,向量表,字符串等復合結構數據類型。

Scheme中的算術運算有+ , - , * , / 和 expt (指數運算),->表明類型轉換。

以上都是基本的功能,有了這些基本的功能后就可以取定義復雜的過程了,過程相當于C語言中的函數,不過這里過程和數據有一樣的地位,也就是說過程可以做參數,返回值,可以賦值,這也就是Scheme為什么稱為函數式語言的原因了。

過程可以使用define和lambda來定義,形如(define 過程名 ( lambda (參數 ...) (操作過程 ...)))。例如

(define add5 (lambda (x) (* x 5)))就定義了乘以5的過程。

總結

以上是生活随笔為你收集整理的Scheme语言基础之数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。

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