게시판 인덱스

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

nML 질문입니다.

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





올리기올려짐: 2005년9월30일 2:49    주제: nML 질문입니다. 인용과 함께 답변

모듈과 모듈타입에 대한 개념을 잡기 위해서 아래와 같은 프로그램을 짜보았는데, pop 함수 부분을 주석 부분으로 작성하면 패턴이 올바르지 않다고 하고, 주석으로 처리하지 않은 부분으로 하면 잘 작동합니다.

이유가 무엇인가요??

코드:

signature StackSig =
  sig
    type stack
    val empty : stack
    val push  : stack * int -> stack
    val pop   : stack -> stack * int
  end

structure IntStack =
  struct
    type stack = int list
    exception EmptyException
    val empty = []
    fun push (s, e) = e::s

    fun pop [] = raise EmptyException
      | pop h::t = (t, h)
    (*fun pop s =
      case s of
        []   => raise EmptyException
      | h::t => (t, h)*)

  end : StackSig
위로
최성록
손님





올리기올려짐: 2005년9월30일 2:50    주제: 실수 인용과 함께 답변

주석으로 처리한 부분은 실행이 되는데, 현재는 실행이 되지 않습니다^^
위로
오학주



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

올리기올려짐: 2005년9월30일 9:22    주제: Re: nML 질문입니다. 인용과 함께 답변

최성록 씀:
모듈과 모듈타입에 대한 개념을 잡기 위해서 아래와 같은 프로그램을 짜보았는데, pop 함수 부분을 주석 부분으로 작성하면 패턴이 올바르지 않다고 하고, 주석으로 처리하지 않은 부분으로 하면 잘 작동합니다.

이유가 무엇인가요??

코드:

signature StackSig =
  sig
    type stack
    val empty : stack
    val push  : stack * int -> stack
    val pop   : stack -> stack * int
  end

structure IntStack =
  struct
    type stack = int list
    exception EmptyException
    val empty = []
    fun push (s, e) = e::s

    fun pop [] = raise EmptyException
      | pop h::t = (t, h)
    (*fun pop s =
      case s of
        []   => raise EmptyException
      | h::t => (t, h)*)

  end : StackSig


17번째 줄을 pop (h::t)로 고쳐보세요.
function application의 우선순위는 :: 연산자보다 높습니다.
그러므로 pop h::t 는 (pop h)::t로 해석 되죠.

코드:

signature StackSig =
  sig
    type stack
    val empty : stack
    val push  : stack * int -> stack
    val pop   : stack -> stack * int
  end

structure IntStack =
  struct
    type stack = int list
    exception EmptyException
    val empty = []
    fun push (s, e) = e::s

    fun pop [] = raise EmptyException
      | pop (h::t) = (t, h)
    (*fun pop s =
      case s of
        []   => raise EmptyException
      | h::t => (t, h)*)

  end : StackSig
위로
사용자 정보 보기 비밀 메시지 보내기 글 올린이의 웹사이트 방문
이전 글 표시:   
이 게시판은 잠겼으므로 글을 올리거나, 답변을 하거나 수정을 할 수 없습니다   이 주제는 잠겼으므로 답변을 하거나 수정을 할 수 없습니다     게시판 인덱스 -> 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