 |
|
이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
박성희
가입: 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
|
|
위로 |
|
 |
|
|
새로운 주제를 올릴 수 없습니다 답글을 올릴 수 없습니다 주제를 수정할 수 없습니다 올린 글을 삭제할 수 없습니다 투표를 할 수 없습니다
|
Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group Translated by kss & drssay
|