게시판 인덱스

 
 FAQFAQ   검색검색   멤버리스트멤버리스트   사용자 그룹사용자 그룹   사용자 등록하기사용자 등록하기 
 개인 정보개인 정보   비공개 메시지를 확인하려면 로그인하십시오비공개 메시지를 확인하려면 로그인하십시오   로그인로그인 

hw5 ex1의 뼈대가 이상한 것 같네요

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2009)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
김성준



가입: 2009년 9월 10일
올린 글: 30

올리기올려짐: 2009년10월28일 11:20    주제: hw5 ex1의 뼈대가 이상한 것 같네요 인용과 함께 답변

ex1의 뼈대 중에 Sm5를 보면

코드:
  let run c =
        try
                (ignore (eval ([],[],[],c,[])))
    with End -> ()
    | x -> print_error x


코드:
  let eval (s,m,e,c,k) =
        let x = (s, m, e, c, k) in
     match x with
       (_,_,_,PUSH(Val v)::c,_) -> (V v::s, m, e, c, k)
     ....


이렇게 구현되어 있습니다. eval을 보면 PUSH를 하고 나서 (V v::s, m, e, c, k)을 그냥 return하고 있습니다.

만약 Sm5.run [PUSH (Val (Num 5)); PUT] 을 실행시키면

( (Num 5), [], [], PUT, [] )

을 리턴하고는 실행이 종료되는데요(m, e, k는 비었다는 의미로 []를 사용했습니다). 즉, stack에 Num 5를 push한 뒤에 PUT은 수행하지 않고 종료됩니다.

제 생각에는 '( (Num 5), [], [], PUT, [] )'을 바로 리턴하는 것이 아니라 'eval ( (Num 5), [], [], PUT, [] ) '의 결과를 리턴해야하는 것 같은데요?
위로
사용자 정보 보기 비밀 메시지 보내기
허기홍



가입: 2007년 9월 27일
올린 글: 231

올리기올려짐: 2009년10월28일 13:43    주제: 인용과 함께 답변

성준씨 말이 맞습니다.

뼈대를 고쳐 올려놓았습니다.

새로 받기 귀찮으신 분들은

sm5.ml 파일을 이렇게 고치시면 됩니다.

코드:

let eval (s,m,e,c,k) =
        let x = (s, m, e, c, k) in
        match x with
           (_,_,_,PUSH(Val v)::c,_) -> (V v::s, m, e, c, k)
        ....

이 부분을

코드:

let rec eval (s,m,e,c,k) =
        let x = (s, m, e, c, k) in
        eval (
          match x with
          (_,_,_,PUSH(Val v)::c,_) -> (V v::s, m, e, c, k)
          ....
       )


이렇게 바꾸어 주세요.

즉, 한단계 수행후에 다시 eval을 재귀 호출하는 것입니다.
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기 글 올린이의 웹사이트 방문
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2009) 시간대: GMT + 9 시간(한국)
페이지 11

 
건너뛰기:  
새로운 주제를 올릴 수 없습니다
답글을 올릴 수 없습니다
주제를 수정할 수 없습니다
올린 글을 삭제할 수 없습니다
투표를 할 수 없습니다


Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group
Translated by kss & drssay