이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
강신행
가입: 2005년 10월 18일 올린 글: 5
|
올려짐: 2005년10월24일 23:12 주제: K- 두 가지 질문 |
|
|
1.
코드: |
let procedure f (cond) = `(if ,cond then write(1) else write(0) end)
in
let n:=true in
call f( `(n=true) )
end
end
|
이것을 K-에 돌리면 어떻게 되어야 하나요?? 전 당연히 1이 나올 줄 알았는데
1이 안 나올 수도 있다는 생각이 얼핏 들어서.......
2. lift는 도대체 뭔지 이해가 되지 않습니다. 예제도 없고 난감해요 ㅠㅠ
게시판에 간단하게 설명해 주셔도 좋구 낼 수업시간에 살짝 설명해주시면
정말로 감사하겠습니다. ㅠㅠ |
|
위로 |
|
|
서상원
가입: 2005년 9월 27일 올린 글: 33
|
올려짐: 2005년10월25일 0:59 주제: |
|
|
1) 1이 나올 것 같습니다만.. 무슨 문제가 있는건가요?
(eval이 없으니까 실행되지 않는 건 빼고..)
(괄호 안의 글 껴넣는 중에 답글이 달렸군요. )
2) "lift exp lift primitive values to codes"라고 적혀있네요.
즉 lift (1) => `(1), lift (true) => `(true) 식으로 값을 코드로 바꿔주는 겁니다.
quote와의 차이점은 이 쓰레드를 따라가보시면 알 수 있을 겁니다.
서상원 가 2005년10월25일 1:23에 수정함, 총 2 번 수정됨 |
|
위로 |
|
|
서성현
가입: 2005년 9월 29일 올린 글: 54
|
올려짐: 2005년10월25일 1:19 주제: Re: 제 생각엔.. |
|
|
call f( `(n=true) ) 가 계산된다면
코드: | `(if n=true then write(1) else write(0) end) |
이게 나올 것 같은데요.
그렇다면 eval을 call앞에 살짝 끼워넣어야 1이 출력되지 않을까요?
아래 코드처럼..
코드: |
let procedure f (cond) = `(if ,cond then write(1) else write(0) end)
in
let n:=true in
eval call f( `(n=true) )
end
end
|
_________________ http://snupl.wo.to |
|
위로 |
|
|
김덕환
가입: 2005년 8월 29일 올린 글: 190
|
올려짐: 2005년10월25일 11:12 주제: Re: K- 두 가지 질문 |
|
|
강신행 씀: |
2. lift는 도대체 뭔지 이해가 되지 않습니다. 예제도 없고 난감해요 ㅠㅠ
게시판에 간단하게 설명해 주셔도 좋구 낼 수업시간에 살짝 설명해주시면
정말로 감사하겠습니다. ㅠㅠ
|
다음 코드가 도움이 되었으면 좋겠습니다.
코드: |
let
x := 1
in
`(x + 1)
end
|
이 코드의 최종 결과값은 `(x + 1)입니다.
코드: |
let
x := 1
in
lift(x + 1)
end
|
이 코드의 최종 결과값은 `(2)입니다.
핵심은 lift(E)는 `(E)와 달리 E를 먼저 (stage 0에서) 우리가 익숙한 계산들을 수행하고, 그 결과값을 코드 값으로 바꾼다는 것입니다. _________________ TheyAreAsSmartAsYouAre |
|
위로 |
|
|
|