이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
박광석
가입: 2008년 9월 5일 올린 글: 18
|
올려짐: 2010년10월24일 10:09 주제: 과제 5-2 |
|
|
1. 과제 설명에 보면
인용: | 번역된 결과를 Exercise 1에서 만든 reduce로 실행시켜서 원래 M0프로그램의 결과와 같은 값을 내놔야 한다. |
라고 되어 있습니다.
그런데 skeleton으로는 M0프로그램을 파싱한 결과만 나오고 M0프로그램이 실행 결과가 나오지 않기 때문에 비교 대상이 없어요.
2. 과제 설명에 보면
인용: | 번역할 프로그램은 항상 자연수를 최종적으로 계산하는 프로그램으로 제한한다. |
라고 되어 있습니다.
그런데 ./run을 통해서 프로그램을 실행하면 normal lambda term으로 결과가 나옵니다. 이렇게 실행한 결과는 encoding 방법에 따라 모양이 다르게 되겠지요.
출력 포맷을 알고싶습니다. 예를들어 결과를 ocaml의 int타입으로 decode한 뒤 string_of_int 함수를 써서 나온 값을 id라고 하면 Lambda.Id(id) 와같이 출력한다거나 하는 정해진 출력 포맷이 필요한 것 같습니다.
3. 가능하다면 M0 language의 semantic을 알려주셨으면 합니다. 특히 rec함수가 햇갈리는데 Rec (id1, id2, pgm)은 함수 이름이 id1이고 argument가 id2이고 pgm이 body인 recursive function이 맞는지요. 그리고 M0로 이 함수를 사용할 때 (rec id1 id2 => body) (id1 5) 이런 모양이 맞나요?
4. alpha numeric identifier가 무슨 뜻인가요?
5. lambda term의 reduction만으로 계산을 해야 하나요? 예를들어 1+2를 할 때 이것을 강의 슬라이드에 있는것과 같이 계산하지 않고 encode된 두 숫자를 ocaml의 int타입으로 decode한 뒤 더해서 더한 숫자를 encode하는 방식으로 계산해도 되는지요? |
|
위로 |
|
|
조성근
가입: 2009년 9월 14일 올린 글: 283
|
올려짐: 2010년10월24일 12:36 주제: |
|
|
1. 예. M0 언어에 대한 인터프리터가 없다고 하여도 복잡하지 않은 언어이기 때문에 프로그램의 실행 결과는 쉽게 예상하실 수 있을 것이라 생각합니다. 의미가 애매한 프로그램이 있다면 알려주세요.
2. 자연수를 encoding하는 방법은 강의 슬라이드 5-0.ppt 에 나와 있습니다. 보통은 이 encoding 방식으로 자연수에 대한 람다식을 만드는데요, 혹시 다른 방식으로 encoding을 하고 싶으신 분은 저희에게 알려주세요.
3. M0 언어의 모양을 보면 아시겠지만 재귀함수는 다음과 같이 만들어진 함수에 바로 인자를 적용하여 함수를 사용합니다.
(rec id1 id2 => body) 5
4. "id0", "id1" 등과 같이 영문자와 숫자의 조합으로 만들어진 변수명을 이야기할 때 사용합니다.
5. 문제 5-2에서는 lambda term을 계산하지 않습니다. M0 프로그램을 lambda식으로 변환해야 합니다. |
|
위로 |
|
|
|