Re: [問題] FLOLAC op semantics 作業

看板PLT (程式語言與理論)作者 (dryman)時間14年前 (2010/07/04 13:17), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/5 (看更多)
: 我也是覺得這樣比較像 natural semantics. 也許 : 改用 config -> config 的原因是以後比較容易和 small-step : semantics 做比較?但無論如何這兩個 type 蠻像的。 : 我猜想你碰到的問題可能不是關於 semantics, 而是 : 不知在 ocaml 中如何做 pattern matching? pattern matching 我會做 我想我問題描述的不夠精確... 節錄一部分不能用的程式碼 用statement->state的版本我已經可以讓它跑了,以下是config->config的版本 c 是config config = Inter a_exper * state |Final state 57 let rec ns c = match c with 58 Inter (Ass (x, e), s) -> Final (update x e s) 59 | Inter (Skip, s) -> Final s 60 | Inter (Seq (st1,st2), s) -> Final ( 61 (fun x -> ns (Inter (st2,x))) 62 (ns (Inter (st1,s)))) 58, 59 都ok(這是老師給的程式碼) config->config 61 要讓rec ns可以吃config我完全想不出有什麼可以實踐的方法 因為Final != state ns 回傳的值不能直接做rec 所以最後我還是把程式碼改成 80 let rec ns stmt s = match stmt with 81 Ass (v,e) -> update v e s 82 |Skip -> s 83 |Seq (st1,st2) -> (fun x -> ns st2 x) (ns st1 s) 這樣就清楚多了 btw 想問一下,有時候在ocaml top levl 中想要reload xxx.ml 檔 只用#use "xxx.m.";;時 它只會從之前錯誤的部分之後繼續讀 而不會更改前面修改的部分 (比如說雖然原本的前半部的type setting parse沒問題 但後面有些東西ocaml說它錯 所以就前後都有經過一些修改 可是再讀取時顯示它並沒有把前面的部分也讀取進來) 目前我的解決方法是離開ocaml再#use "xxx.ml";; 這樣的話就不會出錯 不知道有沒有更快速的解決方式? (ex unuse "xxx.ml"之類?) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.46.31
文章代碼(AID): #1CC1buC0 (PLT)
文章代碼(AID): #1CC1buC0 (PLT)