|
|
이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
손님
|
올려짐: 2008년11월28일 21:55 주제: 'cmd 타입이어야 하는데 cmd 타입입니다' 에러 |
|
|
숙제 6에 2번 풀고 있습니다.
인용: |
type pgm = cmd
and cmd = ASSIGN of exp
| SEQUENCE of cmd * cmd
| REPEAT of cmd
| CHOICE of cmd * cmd
| EQ of exp * cmd
| NEQ of exp * cmd
and exp = NUM of int
| ADD of exp * exp
| SUB of exp * exp
| VAR
type state = int
val exeval : pgm -> state -> state list =
let
val rec eval : exp -> state -> int =
fn (NUM i) _ => i
| (ADD (a,b)) s => (eval a s) + (eval b s)
| (SUB (a,b)) s => (eval a s) - (eval b s)
| (VAR) s => s
in
fn (ASSIGN e) s => [(eval e s)]
|(SEQUENCE (c1,c2)) s => (List.map (fn i => (exeval c2 i)) (exeval c1 s))
|(REPEAT c) s => [1]
|(CHOICE (c1,c2)) s => [1]
|(EQ (e1,c1)) s => [1]
|(NEQ (e1,c1)) s => [1]
end
(* test *)
val x = (VAR)
val a = (ADD (x,(NUM 1)))
val p1 = ASSIGN x
val p2 = ASSIGN a
|
여기까지 하고 있는데 위의 List.map 쓴 부분에서
'cmd 타입이어야 하는데 cmd 타입입니다' 라는 에러가 납니다.
어떻게 해야 하나요...ㅜ |
|
위로 |
|
|
이보영 손님
|
올려짐: 2008년11월28일 22:11 주제: 앗 죄송 |
|
|
위의 손님은 접니다
rec 를 안써주었군요;;
근데 써주었더니 이번엔 잘못된 재귀적 선언이 사용됐다고..ㅠㅠㅠ
nml 컴파일하기 너무 힘들어요 |
|
위로 |
|
|
이보영 손님
|
올려짐: 2008년11월28일 22:16 주제: 아;; |
|
|
let 문을 없애니까 잘 되네요.
담부턴 인형한테 물어볼게요 |
|
위로 |
|
|
|
|
새로운 주제를 올릴 수 없습니다 답글을 올릴 수 없습니다 주제를 수정할 수 없습니다 올린 글을 삭제할 수 없습니다 투표를 할 수 없습니다
|
Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group Translated by kss & drssay
|