| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
김상우
가입: 2011년 9월 10일 올린 글: 50
|
올려짐: 2012년9월26일 14:19 주제: 조교님이 올려주신 2-5뼈대코드는 어떻게 사용하는건가요? |
|
|
예제코드를 돌려보면 괄호처리가 조금 잘못된거같은데 한번 확인해주세요.
pprint를 어떻게 사용하는지 잘 모르겠습니다.
main.ml의 let _ = 부분에서 뭘 하는것인가요?... |
|
| 위로 |
|
 |
이승중
가입: 2010년 6월 22일 올린 글: 561
|
올려짐: 2012년9월26일 15:58 주제: |
|
|
괄호처리 출력부분은 수정해서 올렸습니다.
pprint는 직접 MULT (NUM 5, NUM 6) 같은 구문을 ocaml로 만들었을때 생각과 비슷한지 확인해보는 함수입니다.
뼈대 코드는 테스트를 쉽게 하기 위해서 파일로 부터 zexpr을 읽어들이고
각자 만든 Zexpr.eval에 값을 넣어주기 위해서 만든 것입니다.
s1.txt처럼 s2.txt 를
| 코드: | let x = 10 in max [ 2; 3; 4; x ]
| 로 만들고
해서 제대로 된 결과가 나오는지 확인해 봅니다.
원래대로라면 ocaml코드에
| 코드: | eval (emptyEnv, LET ("x", NUM 10, MAX [ NUM 2; NUM 3; NUM 4; VAR "x"] ))
|
처럼 직접 써야하는데 구문이 복잡해지면 알아보기 힘들기 때문에 제공하는 것입니다. |
|
| 위로 |
|
 |
김상우
가입: 2011년 9월 10일 올린 글: 50
|
올려짐: 2012년9월26일 17:12 주제: 질문 추가합니다~ |
|
|
그러면 s1.txt를 돌렸을 시 결과가 어떻게되야 하나요????
main.ml안에 ignore(eval ~~)이런게 있는데 이부분에서 eval의 결과가 안나오는게 맞나요? |
|
| 위로 |
|
 |
이승중
가입: 2010년 6월 22일 올린 글: 561
|
올려짐: 2012년9월26일 22:52 주제: |
|
|
숙제 문서에는 결과값을 출력하고 값을 돌려주라고 되어있으니까요
뼈대코드 수행하면
s1.txt의 pprint 한 결과
엔터
s1.txt의 pprint_ocaml한 결과
엔터
10
나올겁니다.
그냥 s1.txt를 수행한 값인 10만 제대로 출력되면 됩니다.
p.s 숙제하는데 ignore는 필요가 없지만 설명을 드리자면 임의의 인자를 받아서 아무 일 안하고 unit을 돌려주는 함수 입니다.
;로 명령어를 이어 붙일 때 이전 명령어가 unit값을 돌려주지 않으면 워닝이 나기 때문에 사용하지 않는 리턴값을 제거 한겁니다.
함수 수행에 영향을 주는건 아니기 때문에, 결과값 10이 출력되는것과는 상관이 없습니다 |
|
| 위로 |
|
 |
|