게시판 인덱스

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

한 .n파일에서 다른 파일의 내용을 사용하는 방법이 궁금합니다.

 
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2007)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
김홍준
손님





올리기올려짐: 2007년9월16일 7:09    주제: 한 .n파일에서 다른 파일의 내용을 사용하는 방법이 궁금합니다. 인용과 함께 답변

숙제를 하면서 숙제 코드를 검사하기 위한 테스트 셋을 같이 만들고 있는데요 test1.n 파일에서 1.n 에 있는 merge 함수를 사용하기 위한 방법이 있는지요.
물론 인터프리터에서
코드:

#use "1.n"
#use "test1.n"

같이 해도 되지만 그냥
코드:

nml test1.n

과 같이 한번에 실행을 할 수 있는 방법이 있으면 좋겠습니다.
(물론 test1.n에 val _ = main() 으로 스타트업 루틴을 지정해 놓았습니다.)
위로
김진산



가입: 2006년 9월 13일
올린 글: 45

올리기올려짐: 2007년9월17일 2:12    주제: 좋은 아이디어 네요. :) 인용과 함께 답변

답변은 아니고, 관련 질문하나 드리면..


test1.n 에서 1.n 을 사용할 수 있게 된 후에,

nml test1.n 같이 테스트를 하게 된다면~

결과값을 볼 수 없지 않나요?


결과를 일일이 찍는 코드까지 작성하신건가요? @_@

아님, 다른 방법이 있는 건가요?
위로
사용자 정보 보기 비밀 메시지 보내기 글 올린이의 웹사이트 방문 MSN 메신저
정영범



가입: 2005년 9월 5일
올린 글: 167

올리기올려짐: 2007년9월17일 14:18    주제: 인용과 함께 답변

답변이 늦어서 죄송합니다.

다른 파일에 있는 함수를 사용하려면 모듈로 만들어 줘야 합니다.

만약 a.n에 merge function이 있고 b.n에 test set이 있다고 가정하면

a.n의 내용은

structure 모듈이름 =
struct
fun merge =
.....
end이렇게 모듈로 감싸줘야 합니다.

b.n에서 사용하려면
val input = ...
val _ = 모듈이름.merge input
이렇게 쓰셔야 합니다.

모듈이름은 영어로 쓸 경우 맨 첫글자는 대문자로 쓰세요.

컴파일 방법은 아래와 같습니다.
dreameye@ropas:~/class/PL07/hw1$ nmlc 1.n
dreameye@ropas:~/class/PL07/hw1$ nmlc test1.n
Error while linking test1.cmo: Reference to undefined global `1'

dreameye@ropas:~/class/PL07/hw1$ nmlc -o a.out 1.cmo test1.cmo
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기 글 올린이의 웹사이트 방문
김홍준



가입: 2007년 9월 16일
올린 글: 16

올리기올려짐: 2007년9월17일 22:49    주제: 테스트요 인용과 함께 답변

위에분이 물어 보셔서 제가 작성해 놓은 간단한 테스트 프레임웍을 첨부 합니다.

마지막 7번 문제의 테스트 셋을 예제로 보여드립니다.

코드:

val test_func = crazy2val
val test_data = [
        (ONE NIL, 1),
        (ZERO(ONE(MONE NIL)), -2),
        (ONE(ZERO(ONE NIL)), 5),
        (ONE(MONE(ZERO(MONE NIL))), -9)
]

fun test_run test_set func =
        let fun test f item = f item.0 = item.1
        in List.for_all (test func) test_set
        end

val _ = print_endline (string_of_bool (test_run test_data test_func))


여기서 아래 2개의 정의는 문제에 상관없이 똑같이 복사하셔서 사용하면 되고요 테스트 하는 함수에 따라서 위에 test_func에 함수이름을 test_data에 (입력값, 예상결과값) 쌍의 테스트 셋 리스트를 넣어주면 됩니다. 인자 1개를 받는 함수면 어떤 함수든 테스트 가능합니다.

모든 테스트가 통과되면 true를 하나라도 테스트가 fail되면 false를 화면에 찍어줍니다.

위의 내용을 메인 소스에 뒤에 붙인 다음
nml 7.n 또는 인터프리터상에서 #use "7.n" 과 같이 실행 시킬 수 있고요 (숙제 제출시에는 주석처리 하세요~),
test7.n 처럼 따로 테스트 파일을 만들 경우 인터프리터 상에서
#use "7.n"
#use "test7.n"
이렇게 2줄로 실행 시킵니다.

일반 적인 unittest 테스트 프레임웍처럼 테스트가 fail될 경우 fail된 테스트 셋의 입력값, 기대값, 결과값을 출력하도록 만들어 보려고 했는데 nml에서 일반적인 데이터 타입의 값을 화면에 출력하는 방법을 모르겠네요.
위로
사용자 정보 보기 비밀 메시지 보내기
정영범



가입: 2005년 9월 5일
올린 글: 167

올리기올려짐: 2007년9월18일 10:14    주제: 인용과 함께 답변

김홍준 학생 감사합니다. Laughing
위로
사용자 정보 보기 비밀 메시지 보내기 이메일 보내기 글 올린이의 웹사이트 방문
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2007) 시간대: GMT + 9 시간(한국)
페이지 11

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


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