게시판 인덱스

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

nML에는 C의 #include 같은 구문이 없나요?

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



가입: 2005년 9월 27일
올린 글: 33

올리기올려짐: 2005년9월27일 1:30    주제: nML에는 C의 #include 같은 구문이 없나요? 인용과 함께 답변

숙제 코드와 테스트 코드를 분리하기 위해
한 nML 파일에서 다른 nML 파일을 읽어오고 싶은데
nML에는 C의 #include에 해당하는 기능이 없나요?
위로
사용자 정보 보기 비밀 메시지 보내기
김덕환



가입: 2005년 8월 29일
올린 글: 190

올리기올려짐: 2005년9월27일 13:01    주제: Re: nML에는 C의 #include 같은 구문이 없나요? 인용과 함께 답변

서상원 씀:
숙제 코드와 테스트 코드를 분리하기 위해
한 nML 파일에서 다른 nML 파일을 읽어오고 싶은데
nML에는 C의 #include에 해당하는 기능이 없나요?


모듈(structure) 안에 포함된 선언을 다른 파일에서 불러 쓸 수 있습니다. 예를 들어 문제 6번의 경우에 다음과 같이 선언된 것을
코드:

structure _정수리스트_큐 =
  struct
    ...
    val 빈큐 = ...
    ...
  end

다른 파일에서 다음 두 가지 형태로 사용할 수 있습니다.
코드:

_정수리스트_큐.빈큐

혹은
코드:

open _정수리스트_큐

빈큐

첫번째 숙제는 교수님께서 언어 학습을 염두에 두시고 만드신 문제들이라, 문제 1~5까지는 모듈 형태가 아닙니다. 따라서, 언어 자체에서 처리하기는 곤란하고, 외부 유틸리티를 사용해야 할 듯하군요. 다행히 원래 코드 뒤에 테스트 코드를 덧붙이기만 하면 될 테니까 그렇게 어렵지는 않겠습니다. 예를 들어, 조잡하기는 하지만 원래 코드는 1-s.n에 테스트 코드는 1-t.n에 있다고 할 때 다음 Makefile 정도면 원하는 효과를 낼 수 있을 듯 하네요(들여쓴 곳은 SPACE가 아니라 TAB을 사용해야 합니다).
코드:

.SUFFIXES : .n .cmo

NMLC = nmlc

SRCS = 1.n
OBJECTS = $(SRCS:%.n=%.cmo)

TARGET = 1

all : $(TARGET)

$(TARGET) : $(OBJECTS)
        $(NMLC) -o $(TARGET) $(OBJECTS)

.n.cmo :
        $(NMLC) -c $< -o $@

.PHONY : clean
clean :
        rm -f $(SRCS)
        rm -f *.nty *.cmi *.cmo
        rm -f *~

1.n: 1-s.n 1-t.n
        cat 1-s.n 1-t.n > 1.n

물론, 작업할 때는 이렇게 하더라도 숙제를 제출하기 직전에 점검 차원에서 수동으로 1-s.n을 nmlc로 컴파일해보는 게 좋겠죠?
_________________
TheyAreAsSmartAsYouAre
위로
사용자 정보 보기 비밀 메시지 보내기
서상원



가입: 2005년 9월 27일
올린 글: 33

올리기올려짐: 2005년9월27일 23:10    주제: 인용과 함께 답변

Makefile 감사히 쓰겠습니다. Smile
위로
사용자 정보 보기 비밀 메시지 보내기
서상원



가입: 2005년 9월 27일
올린 글: 33

올리기올려짐: 2005년9월28일 0:39    주제: Re: nML에는 C의 #include 같은 구문이 없나요? 인용과 함께 답변

김덕환 씀:
다행히 원래 코드 뒤에 테스트 코드를 덧붙이기만 하면 될 테니까 그렇게 어렵지는 않겠습니다. 예를 들어, 조잡하기는 하지만 원래 코드는 1-s.n에 테스트 코드는 1-t.n에 있다고 할 때 다음 Makefile 정도면 원하는 효과를 낼 수 있을 듯 하네요(들여쓴 곳은 SPACE가 아니라 TAB을 사용해야 합니다).

..라고 생각했는데, 막상 해보니 생각했던 것과는 좀 다르네요.

테스트 코드를 실행시켜야 하기 때문에, 테스트 코드를 structure로 만들던지 val _ = let ... 형태로 만들어야 하더군요. 따라서 숙제 코드가 테스트 코드 사이에 들어가는 형국이 되어버리네요.

코드:
        cat 1-s.n 1-t.n > 1.n

부분을 '더욱 조잡하게'
코드:
        cat 1-head.n 1-s.n 1-tail.n > 1.n

형식으로 고쳐서 사용해야 할 것 같네요.
(아니면 숙제 코드를 structure로 감싼 다음에 테스트 코드에서 사용하는 것도 비슷할 것 같네요.)
위로
사용자 정보 보기 비밀 메시지 보내기
서상원



가입: 2005년 9월 27일
올린 글: 33

올리기올려짐: 2005년9월28일 1:15    주제: 인용과 함께 답변

...라고 생각했으나...
다 부질없는 삽질이었습니다. Sad

코드:
// 숙제 코드
val _ = 테스트 코드

이런 형식으로 붙여 만들면 되는 거였습니다.

삽질금지!!
위로
사용자 정보 보기 비밀 메시지 보내기
김진현



가입: 2005년 9월 20일
올린 글: 91
위치: SNUCSE OPT. lab.

올리기올려짐: 2005년9월28일 1:39    주제: 주제에서 한참 비껴가 있지만 인용과 함께 답변

위에 Makefile 에 대한 이야기가 있던데요,

nmakegen 을 사용하시면 Makefile 을 쉽게 만드실 수 있습니다.

아직 제대로 속을 들여다보진 않아서 잘은 모르겠지만요 Wink


죄송합니다 주제와 너무 상관이 없네요 ㅜㅠ
_________________
The kingdom of heaven has been forcefully advancing, and forceful men lay hold of it.
위로
사용자 정보 보기 비밀 메시지 보내기 글 올린이의 웹사이트 방문 MSN 메신저
서상원



가입: 2005년 9월 27일
올린 글: 33

올리기올려짐: 2005년9월28일 15:04    주제: 한 발 더 빗나가보면 인용과 함께 답변

아바타가 좋네요. Embarassed

nmakegen도 한번 써봐야겠네요.
잊고 있었습니다. Smile
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 4190.310 Programming Languages (Fall 2005) 시간대: GMT + 9 시간(한국)
페이지 11

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


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