게시판 인덱스

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

[숙제 7] Exercise 1, 2 관련 질문입니다.

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



가입: 2025년 3월 13일
올린 글: 11

올리기올려짐: 2025년5월21일 13:40    주제: [숙제 7] Exercise 1, 2 관련 질문입니다. 인용과 함께 답변

안녕하세요, 프로그래밍언어 수강 중인 박성희입니다.
과제를 하던 중 CPS 와 관련하여 궁금한 점이 생겨 질문 드렸습니다.

과제 스펙 상 Exercise 1에서 변환 전 프로그램의 결과는 Int로 한정되어 있고, 변환하였을 때 (Int -> Result) -> Result 로 되어 있기 때문에 별 문제가 없을 것 같습니다만,
Exercise 2와 같은 경우에는 각각 tau / (tau -> Result) -> Result로 되어 있으며 프로그램의 결과가 정수인 것만 변환 Input으로 받는다는 내용이 있어 보이지는 않습니다. 이것도 tau = Int라고 생각하면 될까요?

그렇다면 Exercise 2에서 프로그램의 결과가 정수가 아닌 특정 함수가 되는 부분에 대해서도 CPS 변환(?)을 수행해야 한 다는 것인가요?
가령. e를 CPS 변환한 것을 [e]라고 했을 때
[\x.(x+1)](\x.(x 1)) 의 실행 결과가 2가 되도록 맞춰 주여야 하는 지 질문드렸습니다.
파서는 Exercise 1과 동일해서 프로그램이 정수만 받는 것으로 생각해서 문제에 대한 잠정적인 답을 구하긴 했습니다만 혹시나 저게 만족한다면 조금 더 생각해 보아야 할 부분이 생길 것 같아 글을 올렸습니다.

그리고 (Exercise 2의 경우는 xcps 함수가 설탕 없는 프로그램을 얻어야 하는 추가 조건이 있지만) 두 상황 모두 run e == run ([e] (추가적인 할 일 없는))
인 상황에서의 결과값이 같은지만 테스트된다고 보면 될까요?

감사합니다.
위로
사용자 정보 보기 비밀 메시지 보내기
오규혁
Site Admin


가입: 2022년 3월 15일
올린 글: 88

올리기올려짐: 2025년5월21일 15:08    주제: 인용과 함께 답변

안녕하세요,

과제 문서에 나와있는 내용은 변환 전 프로그램이 int인 경우에 변환 후 타입을 설명한 것입니다.
항상 모든 변환 전 프로그램이 int라는 의미는 아닙니다.

채점은 변환 한 프로그램이 옳게 변환된 프로그램인지 확인하는 방식입니다.
결과값이 확인하는 경우도 있지만 다른 방식으로도 테스트하여 채점합니다.

조교드림
_________________
TA 오규혁
e-mail: ghoh@ropas.snu.ac.kr


오규혁 가 2025년5월24일 15:37에 수정함, 총 4 번 수정됨
위로
사용자 정보 보기 비밀 메시지 보내기
박성희



가입: 2025년 3월 13일
올린 글: 11

올리기올려짐: 2025년5월22일 8:59    주제: 인용과 함께 답변

안녕하세요,
빠른 답변 감사드립니다.
우선 다시 숙제 스펙을 꼼꼼히 읽어 보니 앞쪽 두 문제 모두
인용:
변환할 프로그램은 항상 정수를 최종적으로 계산하는 프로그램으로 한정한다.

라는 것을 확인하였음을 확인하여 최종적으로 들어오는 프로그램에 대한 타입에 대한 의문사항은 해소된 것 같습니다.

'과제 문서 내용이 변환 전 프로그램이 int인 경우에 변환 타입을 설명한 것입니다'와 관련하여 추가적으로 질문이 있어 답글을 드렸습니다.

문제 2에서는 tau라는 타입변수를 활용하여
인용:
변환된 결과 e 는 e와 타입이 다음과 같이 다르다
e : τ
[e] : (τ → Result)×(τ′ → Result) → Result

라는 부분이 있었습니다.

변환 전 프로그램이 함수인 경우에도 마찬가지로 함수 내부의 표현식도 CPS로 녹이는 것이 과제의 의도라고 보여지는데요.

그러면 함수를 CPS한 타입과 관련한 두 개의 해석 중 어떻게 해석하는 것이 적절한 지 궁금합니다.
1. 위의 tau는 정수의 예시이고 함수의 CPS - 변환 식은 [인용]의 꼴에서 약간 달라질 수 있다.
2. 어쨌든 그렇게 재귀적으로 구한 함수의 CPS - 변환 식이 [인용]과 같이
e : tau --> [e] : (tau -> 'a) -> 'a
를 만족하여야 한다.

예를 들어 \x.(x+1) : Int -> Int가 있을 때
[\x.(x+1)] : ((Int -> Int) -> 'a) -> 'a
를 만족시켜야 한다.

저는 전자의 경우로 봤는데, CPS로 재귀적으로 들어가는 형태에서 함수 내부식이 CPS로 타입이 바뀌어 위와 같은 형태로 안 나타날 것 같으면서도 정의를 생각해보면 [\x.(x+1)] \x.(x 1)을 생각해 보면 CPS의 정의에 따르면 2를 계산해야 할 것 같아서 후자가 맞을 수도 있겠다는 생각이 들었고 약간 헷갈려서 질문을 드렸습니다.

감사합니다.
위로
사용자 정보 보기 비밀 메시지 보내기
오규혁
Site Admin


가입: 2022년 3월 15일
올린 글: 88

올리기올려짐: 2025년5월23일 16:51    주제: 인용과 함께 답변

안녕하세요,

함수의 경우에는 1번이 맞습니다. 함수의 CPS 변환 식의 타입은 인용 꼴과 다릅니다.

조교드림
_________________
TA 오규혁
e-mail: ghoh@ropas.snu.ac.kr
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Spring 2025) 시간대: GMT + 9 시간(한국)
페이지 11

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


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