 |
|
| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
최성록 손님
|
올려짐: 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
|
|
|
| 위로 |
|
 |
|
|
새로운 주제를 올릴 수 없습니다 답글을 올릴 수 없습니다 주제를 수정할 수 없습니다 올린 글을 삭제할 수 없습니다 투표를 할 수 없습니다
|
Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group Translated by kss & drssay
|