 |
|
이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
최영진09
가입: 2010년 9월 8일 올린 글: 21
|
올려짐: 2015년11월10일 23:11 주제: BIND 정의와 뼈대코드 구현 차이 |
|
|
안녕하세요, 수강생 최영진입니다.
(w :: S, M, E, bind x :: C, K)
⇒ (S, M, (x, w) :: E, C, K)
에서 w는 Value + Proc + (Var × Loc) + (Var × Proc) 이고
Value = Integer + Bool + {·} + Record + Loc 입니다.
그런데 Value를 bind하려다가 계속 에러가 나서 뼈대코드 sm5.ml을 살펴보니 연산이 Val(Loc)과 Proc밖에 받지 않는 것 같습니다.
코드: |
......
242 | (V (L l) :: s, m, e, BIND x :: c, k) -> (s, m, (x, Loc l) :: e, c, k)
243 | (P p :: s, m, e, BIND x :: c, k) -> (s, m, (x, Proc p) :: e, c, k)
244 | (s, m, (x, ev) :: e, UNBIND :: c, k) -> (M (x, ev) :: s, m, e, c, k)
......
|
대충 생각하기로는 GC문제를 위해 함수가 아니면 무조건 malloc 하라는 것 같기도 한데,
스펙이 맞지 않는 것 아닌지요? |
|
위로 |
|
 |
최재승
가입: 2012년 9월 10일 올린 글: 211
|
올려짐: 2015년11월11일 0:47 주제: |
|
|
안녕하세요,
hw5.pdf 문서에 따르면, Environment 부품의 정의가
인용: | Environment = (Var × (Loc + Proc)) list |
로 되어 있기 때문에 Bind는 Loc과 Proc만 환경에 묶을 수 있는 것이 맞습니다.
문서에 있는 다음의 실행 규칙이 혼란을 드리는 것 같은데,
인용: |
(w :: S, M, E, bind x :: C, K)
⇒ (S, M, (x, w) :: E, C, K)
|
여기서 w는 임의의 Svalue가 아닌, (x,w) :: E로 Environment에 묶을 수 있는 Loc이나 Proc 중 하나라고 이해하시기 바랍니다
(같은 질문 : https://ropas.snu.ac.kr/phpbb/viewtopic.php?t=5138)
조교 드림 |
|
위로 |
|
 |
최영진09
가입: 2010년 9월 8일 올린 글: 21
|
올려짐: 2015년11월11일 0:53 주제: |
|
|
아, 넵. 감사합니다. |
|
위로 |
|
 |
|
|
새로운 주제를 올릴 수 없습니다 답글을 올릴 수 없습니다 주제를 수정할 수 없습니다 올린 글을 삭제할 수 없습니다 투표를 할 수 없습니다
|
Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group Translated by kss & drssay
|