摘要: 實習的時候,自己的時間明顯沒有在學校的時候多啊。這次Kernel FP拖了很久,一個多月都還沒寫完。幸好語法分析器用了之前開發的Syngram,要不得多花一個月。Kernel FP的類型推導的代碼實在是很難看,趁著又發現了一個Bug,重構一下。
內含代碼
閱讀全文
posted @
2008-10-27 05:23 陳梓瀚(vczh) 閱讀(1989) |
評論 (6) |
編輯 收藏
摘要: Kernel FP的虛擬機設計起來比較別扭,主要還是因為laziness的問題。不過現在已經有了一個能用的想法了。
閱讀全文
posted @
2008-10-18 23:29 陳梓瀚(vczh) 閱讀(1537) |
評論 (1) |
編輯 收藏
摘要: 類型推導到這里也就結束了。雖然可能有點小bug,不過這個以后遇到再處理了。接下來的一個模塊是跟類型推導沒有耦合的新模塊,兩邊可以平行處理。
Kernel FP的指令集不同于以往的指令集。因為作為一門純函數式語言,就必須要有laziness。這就是說,凡是可以不運行的代碼都一定不運行,凡是可以晚一點執行的代碼一律等到需要的時候再執行。也就是說,參數傳進函數的時候,傳的是代碼而不是值。因此指令集只能用來表達代碼的邏輯結構。
閱讀全文
posted @
2008-10-11 02:10 陳梓瀚(vczh) 閱讀(1441) |
評論 (1) |
編輯 收藏
摘要: 有一些主函數的某些參數只在let-in表達式所定義的子函數使用,然后被主函數間接使用。今天修了一個bug支持了這種函數的類型推導。例子如下:
閱讀全文
posted @
2008-10-08 08:19 陳梓瀚(vczh) 閱讀(1357) |
評論 (0) |
編輯 收藏
摘要: 今天將Haskell的一部分列表處理函數抄進了Kernel FP里,堅持所有函數(模板函數)不寫類型,而讓編譯器進行類型推導:
閱讀全文
posted @
2008-10-07 08:10 陳梓瀚(vczh) 閱讀(1279) |
評論 (0) |
編輯 收藏
摘要: 經過上一次的成功試驗,這次終于完成了剩余的表達式類型的類型推導。過程及結果如下:
閱讀全文
posted @
2008-10-06 06:47 陳梓瀚(vczh) 閱讀(1506) |
評論 (1) |
編輯 收藏
摘要: 我終于在實驗階段解決了這個困擾了我5個月(雖然實際上我花了3個星期)的問題。目標是這樣的:你寫程序,可以盡可能的不寫一些類型信息,譬如函數參數和返回值的類型信息等。我的編譯器幫你把它的類型算出來。
內詳,有例子、方法和模型。
閱讀全文
posted @
2008-10-04 07:19 陳梓瀚(vczh) 閱讀(1838) |
評論 (3) |
編輯 收藏
摘要: 經過了5個小時的艱苦奮斗,符號表終于計算出來了,而且也做了一部分語法分析。接下來的工作是類型推導。今天的結果如下。
閱讀全文
posted @
2008-10-02 07:46 陳梓瀚(vczh) 閱讀(1686) |
評論 (1) |
編輯 收藏
摘要: 輸入:
pattern : 含有通配符*與?的字符串
string : 被匹配的字符串
輸出:true與false代表匹配成功與失敗
僅19行
閱讀全文
posted @
2008-10-01 09:41 陳梓瀚(vczh) 閱讀(1471) |
評論 (0) |
編輯 收藏
摘要: 語法分析器終于完成了,總共花了7個小時的時間。其中遇到了一些小問題,譬如lambda expression的\param->expression和let-in expression的let declaration-list in expression里面的expression需要盡可能長的解決辦法。因為用了Syngram,所以不得不調整出符合需求的文法。
為了大概看一看文法有沒有寫對,我寫了一個程序,讀入KernelFP語言寫的一份代碼,將其格式化并輸出。
閱讀全文
posted @
2008-10-01 01:31 陳梓瀚(vczh) 閱讀(1565) |
評論 (0) |
編輯 收藏