-
主線目標:
- 繼續寫 transpiler
-
支線目標:
- 待補
這次 CindyLinz 跟 AlexLu 做了 transpiler 。有實作心得的人,分別講解各自的實作。
CindyLinz 講解自己的 trans ,先看 tranpile 出來的 code 。提到未來可能會移除 async ,畢竟在 browser 中,沒有 getChar 。
- 全域的 env ,大家註冊自己(prelude-lambda.js, prelude-native.js),用 JS 寫的函數也能註冊到 global
- 會有 main
- env 定義完,就執行,就是之前的
weak_normal_form
- 加上了
'dat'
表示 native data
- Prelude 混用 Haskell 和 native ,生 code 的能力比較完整後,越來越多東西可以用 Haskell 寫
transModule
吃一個 Module ,吐出 JS- RuntimeSource.hs 是由 res2src.pl 生出來的
- 有參數是 FuncBind ,沒參數是 PatBind
- 本來規劃的「支援 desugar, type inference 之後的程式碼」和「作出上列基本語法範圍內的 type inference / type check (之一)」實際上會混在一起做
- GADTs...(待補)
- 要考慮 case 遇到 native (
I# 0#
和0#
)時怎麼作 - user 寫的 case 順序可能和 GADTs 不同,得幫他補,並調順序(可能是指 792e247 中對 fibs.hs 的修改 )
_
不是變數,是 WildCard ,[]
是 PList 不是 List- 都是執行才爆炸
- 希望將來可以直接使用 GHC 的 Prelude
- 早點做 import 比較好
- 在 GHC type 錯了會爆炸,在 ulc 裡卻不會
漏記一段
- 沒有用到 cabal ,用了 stack , stack 預設就用 cabal sandbox
- 苦主每次更新 Arch ,就得把 cabal 裡所有的 modules 都重裝一次 QAQ
- CindyLinz 提到未來也要想想怎麼做 Workshop 自己的 package manager
- 有關 Applicative...(待補)
- 全部用 do
- CindyLinz 第二次提到想名字是件麻煩的事情
- 已經做了吐出 JSON 的 console interperter:
stack exec transpiler-exe
- 存在 Language.Haskell.Exts.Pretty 可以用
- Language.Haskell.Exts.SrcLoc?
- 這段被 CindyLinz 說很像 Core ,只是沒有 type
CindyLinz 建議這次結束可以先讀 Hindley-Milner type inference 演算法。不用實作,先讀懂就好。
- 開始用 Java 實作
- 使用 De Bruijn Index , 見
Db*.js
- 正在講 internal function 的參數該怎麼化簡,明知 AST 一定有 normal form ,不能以任意順序 evaluate 的話不開心
CindyLinz 表示 LCamel 又提出了自己沒想到的問題 (Y)
- subs 參數會被 evaluate 兩遍的問題, LCamel 表示還不清楚,哪時 subgraph 可以被安心的重用
- CindyLinz 表示參數一樣就可以用,要是遇到 World ,則要假設都不一樣
- evaluate 好幾遍這件事情,是在實作 read 時發現的
- 現在的實作,吃滿了會把 index 歸零
- AlexLu 找到了 Java 寫的 Haskell parser ?
- CindyLinz 提到可以寫:
class F (A a b c)
,但是不能寫:class F (A a) (B b)
,語法不會多很多。但是for all
就會多很多。 - CindyLinz 再次強調大家都用 Haskell 寫 desugar 的話,可以互相重用。
- LCamel 考慮在 Java 中跑 JavaScript engine !
- CindyLinz:「自己先作過才會發現,欸呀,進度訂太快 ^^|」
- 下次沒訂新進度,先跟上或插進來,之前的就用別人的是可以的。沒時間寫也可以抽時間想,這樣討論的時候不會無聊。
- LCamel 希望 IDE 可以直接告訴自己現在的 syntax 跟定義。 code 的形狀可能無法 Google ,但是 parser 知道(那個形狀)是什麼東西。
- FT 來的新朋友 Tyler 還有另外兩位是?
- 要操作 DOM 怎麼辦?需要 native/foreign library
- 只求可以運作的話,希望 foreign library 能越少越好
2015.12.10 (四)