게시판 인덱스

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

모듈 사용법

 
글 쓰기   답변 달기     게시판 인덱스 -> 4190.210 Principles of Programming (Fall 2012)
이전 주제 보기 :: 다음 주제 보기  
글쓴이 메시지
최민아



가입: 2009년 9월 28일
올린 글: 236

올리기올려짐: 2012년11월26일 16:38    주제: 모듈 사용법 인용과 함께 답변

숙제를 위해 모듈 사용법을 간단하게 적습니다.
모듈은 정의들의 집합입니다. 예를 들면

코드:
module MyStack =
  struct
    type t = int list
    exception Empty
    let empty = []
    let push x t = x :: t
    let pop t =
      match t with
        [] -> raise Empty
      | h::t -> (h, t)
    let first t =
      match t with
        [] -> raise Empty
      | h::t -> h
  end

let s1 = MyStack.push 3 (MyStack.empty) in
let s2 = MyStack.push 4 s1 in
let (x, stack) = MyStack.pop s2 in
x;;
- : int = 4



숙제에 주어진 signiture를 사용하면 모듈의 정의 중 일부를 숨길 수 있습니다. signiture는 일종의 인터페이스입니다.

코드:
module type MYSTACK =
  sig
    type t
    exception Empty
    val empty : t
    val push : int -> t -> t
    val pop : t -> int * t
  end


와 같이 정의하고 나서

코드:
# module AbstractStack = (MyStack : MYSTACK);;
module AbstractStack : MYSTACK
# AbstractStack.first [1;2;3] ;;
Unbound value AbstractStack.first


와 같이 signiture를 사용해 스택을 정의하면, signiture에 정의되지 않은 first 함수를 사용할 수 없습니다.

과제에서는 주어진 signiture에 해당하는 모듈을
코드:
module .. =
 struct
  ...
 end

와 같이 정의하면 됩니다.
위로
사용자 정보 보기 비밀 메시지 보내기
이전 글 표시:   
글 쓰기   답변 달기     게시판 인덱스 -> 4190.210 Principles of Programming (Fall 2012) 시간대: GMT + 9 시간(한국)
페이지 11

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


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