게시판 인덱스

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

숙제 3-1: 테스트 케이스 공유

 
글 쓰기   답변 달기     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2014)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
김찬민



가입: 2010년 9월 6일
올린 글: 81

올리기올려짐: 2014년10월7일 23:37    주제: 숙제 3-1: 테스트 케이스 공유 인용과 함께 답변

헷갈릴만한 코드나 exception이 나야할 코드나 같이 공유해주셨으면 해요.

저는 하나만 올릴테니 공유 부탁드려요.

코드:
let proc f(f,f,g,g) = if g < 0 then 1 else if not (g < 5) then 2 else f({},unit,g-1,g+(if {} = unit then 1 else (0;g(3)))) in write(f(0,1,2,2/1))

결과: 2
위로
사용자 정보 보기 비밀 메시지 보내기
방정호



가입: 2011년 9월 19일
올린 글: 40

올리기올려짐: 2014년10월7일 23:47    주제: 인용과 함께 답변

테스트셋 감사합니다.
저는 not allowed 가 뜨면서 동작이 안되네요.

그런데 스펙문서에 시멘틱스로는 environment에서
proc의 id랑 그냥 value의 id랑 구분이 없는 것 같은데,
함수 이름이랑 그 scope에 있는 변수가 같은 이름을 갖는 것이 가능한 건가요?
위로
사용자 정보 보기 비밀 메시지 보내기
김찬민



가입: 2010년 9월 6일
올린 글: 81

올리기올려짐: 2014년10월7일 23:52    주제: 인용과 함께 답변

K- 언어 문법 및 의미구조에 나오는 것이 모두 맞고, 충분하다고 가정하면 같은 id를 쓰는 걸 막는 부분이 없다고 생각해서 만든 테스트케이스입니다.

저는 가능하다고 보고 만들었는데, 혹시 결과가 문서랑 안 맞거나 이상한가요?
위로
사용자 정보 보기 비밀 메시지 보내기
방정호



가입: 2011년 9월 19일
올린 글: 40

올리기올려짐: 2014년10월8일 0:10    주제: 인용과 함께 답변

잘 모르겠네요.
조교님이 답변을 해주셔야 될 것 같습니다.

저도 제 구현에서 이 코드가 어떻게 작동할지는 좀 더 살펴봐야 겠지만,
f라는 이름이 함수, 변수 중 하나로 바인딩이 되버려서 어딘가에서 not allowed(hw3.ml에 기본적으로 있던 에러)가 나오는 것 같네요.


방정호 가 2014년10월8일 14:18에 수정함, 총 1 번 수정됨
위로
사용자 정보 보기 비밀 메시지 보내기
김용기



가입: 2014년 9월 30일
올린 글: 11

올리기올려짐: 2014년10월8일 14:05    주제: 인용과 함께 답변

김찬민님 말씀대로 semantics를 보면 적법한 코드로 보입니다.
저도 동일하게 2가 결과로 나오고요...

K- 언어의 의미 정의를 보면 함수 호출 시 환경에 파라메터를 바인딩 하는 순서는

1. 파라메터 id를 왼쪽 -> 오른쪽으로 바인딩 (덮어쓰기 가능)
2. 가장 마지막에, 함수 이름을 환경에 바인딩(함수명은 항상 함수로 바인딩됨)

따라서 let proc f(f,f,g,g) 의 경우 f 로 넘어온 인자는 함수 바인딩 f에 의해 항상 덮어 씌워 지므로 사용할 수 없는 의미 없는 인자로 보입니다.

위로
사용자 정보 보기 비밀 메시지 보내기
강동옥



가입: 2009년 9월 18일
올린 글: 602

올리기올려짐: 2014년10월8일 16:53    주제: 인용과 함께 답변

주어진 문서의 스펙을 그대로 따라간다면 대로 정상적으로 실행되어야 합니다.
그 구체적인 원리는 김용기 씨가 말씀하신 것이 맞고요.

하지만 조교 팀에서 내부적으로 논의한 결과, 그러한 코너 케이스는 테스트하지 않는 것으로 결정하였습니다. 이는, 그러한 코너 케이스를 허용하는 것이 언어에 있어 큰 유용함을 제공해 주지는 않는다고 판단했기 때문입니다.

즉, 테스트케이스에서 한 함수의 매개변수들은 모두 서로 다른 이름을 갖고, 그 이름들은 해당 함수의 이름과 중복되지 않는 것으로 정하겠습니다.

이러한 테스트케이스를 사용하지는 않겠습니다만, 왜 정상적으로 실행되지 않는지 그 원인은 파악해 보시는 것은 의미있을 것입니다. (혹시 semantics를 잘못 이해하고 있지 않았는지 검증하는 차원에서)


강동옥 가 2014년10월9일 12:22에 수정함, 총 1 번 수정됨
위로
사용자 정보 보기 비밀 메시지 보내기
방정호



가입: 2011년 9월 19일
올린 글: 40

올리기올려짐: 2014년10월8일 16:58    주제: 인용과 함께 답변

제 코드를 보니 CALLV 구현에 문제가 있었던 것 같습니다.
테스트케이스랑 답변 모두 감사드립니다.
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
글 쓰기   답변 달기     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2014) 시간대: GMT + 9 시간(한국)
페이지 11

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


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