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. 相關工具