ReaderT Env Maybe Val (0)
大抵上來說順利,不過現在卡關了,想不到好辦法 :(
問題在於 lambda abstraction 的部份...
eval lambda 出來,目前是寫成 Cls (Val -> Val)
然而這樣做使得 application 時,一定會有結果,
因為我等於是把 application 做到 Cls 裡面了 @@
變成只能這樣寫:
return (Cls (\arg ->
fromJust $ runReaderT (eval expr) ((name, arg) : env)))
那個 fromJust 抽不出來 :/
或許要修正這邊,得修改 data model 的方式...
==
說是到這裡順利,其實一堆都是亂試才試出來的。
也罷,練熟悉度也好。至少我現在寫得比之前快很多 @@
就像數字有敏感度問題,大概 haskell 也有吧。
畢竟 monad 真的把很多東西都隱藏起來了...
0 retries:
Post a Comment
Note: Only a member of this blog may post a comment.