게시판 인덱스

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

오랫만에 nML을 하려니...

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4541.664A Program Analysis (Spring 2006)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
정찬주
손님





올리기올려짐: 2006년4월30일 20:41    주제: 오랫만에 nML을 하려니... 인용과 함께 답변

함수 타입 잡는 법이 잘 기억이 나지 않습니다(원래 몰랐다거나...)

숙제는

pgm -> ( pgm -> 메모리 셋)

의 eval함수를 짜는 것인데

이 의미가 함수에 프로그램을 입력받으면 프로그램을 받았을 때 메모리가 나오는 함수가 리턴된다

라는 것은 이해하겠는데

pgm -> pgm -> 메모리 셋

과는 어떻게 다르며

(저건 fun eval pgm memoryset 하면 나오지요)

어떻게 저런 모양의 함수를 정의할 수 있으며

테스트할 때 eval pgm 하면 pgm-> 메모리셋 이 나오고
eval pgm pgm 하면 메모리셋이 나와야 하는 것인지

가 궁금하네요...

정리

1. pgm -> ( pgm -> 메모리 셋) ?= pgm -> pgm -> 메모리 셋
2. 1의 답이 아니오 라면 왼쪽 거 어떻게 정의해요?
3. eval pgm 하면 pgm-> 메모리셋 이 나오고
eval pgm pgm 하면 메모리셋이 나와야 하는 거죠?

p.s. 타입이 (pgm*pgm) -> 메모리셋 이면 참 짜기 편할 거 같아요.
eval pgm 했을 때 함수 리턴하게 하는 게 감이 안 잡힌다는 말입니다 ㅠㅠ
위로
진민식



가입: 2006년 3월 21일
올린 글: 67

올리기올려짐: 2006년5월1일 2:09    주제: 인용과 함께 답변

- 질문
1. pgm -> ( pgm -> 메모리 셋) ?= pgm -> pgm -> 메모리 셋
2. 1의 답이 아니오 라면 왼쪽 거 어떻게 정의해요?
3. eval pgm 하면 pgm-> 메모리셋 이 나오고
eval pgm pgm 하면 메모리셋이 나와야 하는 거죠?

- 답변
functional programming language(nML포함) 에서는 -> 의
associativity가 오른쪽입니다.
따라서 pgm -> (pgm -> 메로리 셋) = pgm -> pgm -> 메모리 셋
입니다. 그리고 주어진 pgm의 각 command도 하나의 pgm이 됩니다.
그래서 위의 함수 정의는 전체 프로그램을 주면, 전체 프로그램의
각 command(이것도 하나의 pgm)을 입력받아
그 command가 실행되기 직전의 memory
를 돌려주는 함수가 됩니다.

위의 답변은 일반적인 이야기이고 수업시간에도 교수님이 언급하셨듯이
pgm -> ( pgm -> 메모리 셋)의 정의의 추상적인 것입니다.
숙제에서 요구하는 것은 pgm을 넣으면 결과가 나오는데
그 결과가 각 command에 해당하는 momory set 정보를 가지고 있으면
됩니다. 이 결과는 개념적으로는 pgm -> memory set 인 함수이나
그냥 table처럼 구현하셔도 상관없습니다.
구현시에는 어떤 type을 사용해도
상관없습니다. 아마 nML library중 map을 사용하시면 편하실 것 입니다.
map을 사용한다면 실제 프로그램에서 eval 의 type은
pgm -> Map 의 형태가 될 것입니다. 이 때 map의 key는 pgm의 각 command
가 될 것이고 해당 key의 값이 memory set 이 될 것입니다. 이 때 key 로
쓰이는 command는 abstract tree상에서 다른 곳에 있으나 같은 형태를
같는 command일 수 있습니다.(ex x := 1; x := 1) 이런 경우, 각 command
를 구별할 수 있는 방법을 고안하시면 될 것입니다.

또한 위에서 얘기한 방법이외에도 다양하게 구현 하실 수 있을 것 입니다.
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4541.664A Program Analysis (Spring 2006) 시간대: GMT + 9 시간(한국)
페이지 11

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


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