게시판 인덱스

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

K- 두 가지 질문

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



가입: 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는 도대체 뭔지 이해가 되지 않습니다. 예제도 없고 난감해요 ㅠㅠ
게시판에 간단하게 설명해 주셔도 좋구 낼 수업시간에 살짝 설명해주시면
정말로 감사하겠습니다. ㅠㅠ Embarassed
위로
사용자 정보 보기 비밀 메시지 보내기
서상원



가입: 2005년 9월 27일
올린 글: 33

올리기올려짐: 2005년10월25일 0:59    주제: 인용과 함께 답변

1) 1이 나올 것 같습니다만.. 무슨 문제가 있는건가요?
(eval이 없으니까 실행되지 않는 건 빼고..)
(괄호 안의 글 껴넣는 중에 답글이 달렸군요. Embarassed )

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는 도대체 뭔지 이해가 되지 않습니다. 예제도 없고 난감해요 ㅠㅠ
게시판에 간단하게 설명해 주셔도 좋구 낼 수업시간에 살짝 설명해주시면
정말로 감사하겠습니다. ㅠㅠ Embarassed


다음 코드가 도움이 되었으면 좋겠습니다.

코드:

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
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2005) 시간대: GMT + 9 시간(한국)
페이지 11

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


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