게시판 인덱스

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

[숙제 7] Exercise 3 관련 질문입니다.

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



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

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

안녕하세요, 프로그래밍언어 수강 중인 박성희입니다.
사실 질문을 한번에 올리려 그랬는데, 따로 나눠놓는 것이 좋을 것 같아 두 개로 나눠 올렸습니다. M언어의 파서와 관련한 질문인데요,
과제 스펙 상에 M언어의 recursive ftn에 대한 정의는
let rec f = e1 in e2
로써 e1에는 결과적으로 Closure가 씌여진 함수를 결과치로 주는 프로그램만 들어 올 수 있다는 정의를 확인하였는데요,

실제 M코드에서는 REC(f, x, e1
let rec f = fn x => e in e2
에 대해서만 파싱이 되고
let rec f = (fn x => e) in e2
등은 파싱이 안 되는 것으로 보입니다.

제가 모르는 부분이 있거나 혹은 그냥 파서 이슈 (?)라고 생각하면 될까요?

그리고 REC 안에 있는 x가 정확하게 명시되어 있지 않은 것으로 보입니다만
σ, M e1 ⇒ λx.e,σ ,M 에서 e에 들어가는 x로 생각해 주면 될까요?

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


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

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

안녕하세요,


1. recursive 함수에 대해서는
let rec f = fn x => e in e2
에 대해서만 파싱이 되고
let rec f = (fn x => e) in e2
은 파싱이 안되는 것이 맞습니다.

M언어 문서를 참고하면 (fn x => e)는 e이므로 rec id = e 형태가 됩니다.
하지만 recursive 함수 문법은 rec id = fn id => e 입니다.
따라서, 두번째 프로그램은 언어 정의에 만족하지 못하는 프로그램이므로 파싱이 되지 않는 것입니다.


(5.29) 파서 수정하였습니다.

2. REC 안에 있는 x는 M언어 문서에서 확인할 수 있는 내용으로 e1의 계산 결과인 클로저에 있는 x가 맞습니다.

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


오규혁 가 2025년6월2일 13:21에 수정함, 총 8 번 수정됨
위로
사용자 정보 보기 비밀 메시지 보내기
오규혁
Site Admin


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

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

안녕하세요,

http://ropas.snu.ac.kr/~ta/4190.310/25/show/parser.mly
위 파일로 parser.mly를 대채하면 let rec f = (fn x => e) in e2 파싱이 됩니다.

조교드림
_________________
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