天天看點

程式設計語言A-week2

Coursera上華盛頓大學的公開課,程式設計語言的學習記錄。這門課程有ABC3個部分,這是A部分,用的是ML語言。

課程位址:https://www.coursera.org/learn/programming-languages/home/welcome

week1就是一些簡要的介紹和課程需要的一些工具的安裝(Emacs),沒什麼好記錄的。

變量的綁定

靜态環境,進行類型檢查

動态環境,進行值的檢查

表達式的規則:

文法檢查

語義檢查

1. 類型檢查

2. 值的檢查

shadowing

先後将不同的值綁定給同一個變量,這個變量之前被綁定的值就會被隐藏,稱作shadowing

視訊裡提到,因為這個原因,是以在Emacs裡使用REPL的時候,用use “×××.sml” 要先終止上一次的再重新開始(??沒了解,先記着)

函數

格式:

pair

一對變量,可以是不同類型

tuple

任意數目的變量,可以是不同類型

list

任意數目的變量,同一類型

建立局部變量 let expression

let ...args... in ...exp... end

嵌套函數:在函數裡可以在let表達式裡定義新的函數,這個新的函數隻在let表達式裡可見,有點封裝的意思

在ML語言裡,要想通路一個list裡的很多值都要借助遞歸的寫法(?應該是吧,至少目前課程都沒有講到類似數組下标之類的東西),寫遞歸的時候要注意避免重複的計算

option 類型

NONE, SOME ,valOf, isSome

與或非

andalso orelse not,和C語言裡一樣的短路規則

ML裡,不會有其他語言裡引用産生的問題,即變量不會被意外修改

最後,學習一門語言的5個方面:

1. 文法

2. 語義

3. idioms,應該是寫的代碼要易于了解的意思吧

4. 這個語言的一些庫

5. 相關工具

繼續閱讀