|
|
이전 주제 보기 :: 다음 주제 보기 |
글쓴이 |
메시지 |
김용태 손님
|
올려짐: 2006년5월30일 17:25 주제: unit 란 무엇인가요? |
|
|
인용: | 오류: {max_value: int, min_value: int, ...} 타입이어야 하는데
unit 타입입니다. |
코드: | let
val range : t_range = { min_value = ref 0, max_value = ref 0 }
in
case exp of
Num(n)
=>
(
(range.min_value) := n;
(range.max_value) := n
) |
range.min_value 에 n 을 할당 하려는 상황에서 발생하는데요. 타입을 맞춰 준다고 ref n 하면 int 타입이어야 하는데 _a ref 여야 한다고 에러가 나네요.
nML 기본없이 숙제를 하다보니까 이런 부분에서도 막히네요..ㅠㅠ
과연 이 글에 대한 답변을 통해서 숙제를 마무리 지을 수 있을런지
조교님. 미리 일단 감사드립니다. |
|
위로 |
|
|
진민식
가입: 2006년 3월 21일 올린 글: 67
|
올려짐: 2006년5월30일 19:59 주제: |
|
|
전체 코드를 보지 않아서 확실치는 않치만,
(range.min_value) := n;
(range.max_value) := n
의 수행 결과는 unit type이 됩니다.
nML에서는 x := E의 결과 값의 type이 E의 타입이 되는 것이 아니라.
unit이라는 특별한 type이 됩니다.
따라서 아래 코드를 실행한 결과의 type 은 unit이 됩니다.
코드: | let
val range : t_range = { min_value = ref 0, max_value = ref 0 }
in
case exp of
Num(n)
=>
(
(range.min_value) := n;
(range.max_value) := n
) |
위의 코드가 {max_value: int, min_value: int, ...} 타입을 원하는
expression의 subexpression으로 쓰인 것 같습니다. |
|
위로 |
|
|
김용태 손님
|
올려짐: 2006년5월30일 20:18 주제: 그렇다면 unit 타입은 어떻게 변형이 가능한지요.. |
|
|
조교님 뿐만 아니라, 다른 분들도 혹시 같은 경험 있으시다면 도움 부탁드립니다.
ㅠㅠ
unit -> int 나, ref int 등으로 시원스레 변경할 수 있는 방법 없을까요?
아 너무 답답하네요.ㅠㅠ |
|
위로 |
|
|
진민식
가입: 2006년 3월 21일 올린 글: 67
|
올려짐: 2006년5월30일 20:57 주제: |
|
|
코드: | let
val range : t_range = { min_value = ref 0, max_value = ref 0 }
in
case exp of
Num(n)
=>
(
(range.min_value) := n;
(range.max_value) := n
) |
위의 code의 의도가 expression n을 evaluate하면,
interval [n,n]을 리턴하는 코드라고 하면,
코드: | ai_exp(exp) =
case exp of
Num(n)
=> {min_value = n, max_value = n}
....
| 과 같이 작성하면 되지 않나요?
혹시 중간에 reference로 유지한 값을 다른 곳에서 사용한다면,
그래서 현재 코드를 그대로 유지 하고 싶으시다면,
코드: | let
val range : t_range = { min_value = ref 0, max_value = ref 0 }
in
case exp of
Num(n)
=>
(
(range.min_value) := n;
(range.max_value) := n;
{min_value = !(range.min_value), max_value = !(range.value)}
) |
위의 코드 처럼, {min_value = !range.min_value, max_value = !range.value} 와 같이
{max_value: int, min_value: int, ...} 타입을 가지는
recode value를 만들어 주셔도 될 것 같습니다.
참고로,
nML에서는 e1;e2;e3 라는 sequence가 있으면 sequence의 전체
type은 e3 의 타입이 됩니다.(참고로 unit type이 아닐 때는
compiler 가 warning을 내기는 합니다,) |
|
위로 |
|
|
|
|
새로운 주제를 올릴 수 없습니다 답글을 올릴 수 없습니다 주제를 수정할 수 없습니다 올린 글을 삭제할 수 없습니다 투표를 할 수 없습니다
|
Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group Translated by kss & drssay
|