 |
|
| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
허기홍
가입: 2007년 9월 27일 올린 글: 231
|
올려짐: 2007년10월19일 21:09 주제: nml의 레코드 |
|
|
지난번 조교님의 nml튜토리얼 수업시간 자료에 보면
nml의 레코드 사용법이 나와있습니다.
그런데 라이브러리 페이지에 레코드가 안보이네요.
어떻게 된것인지 궁금하고,
우리 숙제 레코드를 이것으로 구현하는것은 좀 치사한 방법일까요?
또한 Map을 사용하는 경우에
nml 인터프리터에서
val t1 = Map.add "a" 1 Map.empty;;
val t2 = Map.add "a" 1 Map.empty;;
t1=t2;;
하면 true가 나옵니다.
그런데 제가 맵으로 구현한 K- 레코드는 같은 값을 가져도 = 연산을 하면 false가 나오는데 왜 그런것인가요?
제가 잘못짠것일까요 |
|
| 위로 |
|
 |
신해수 손님
|
올려짐: 2007년10월20일 0:54 주제: Re: nml의 레코드 |
|
|
# val t2 = Map.add "b" 2 (Map.add "a" 1 Map.empty);;
val t2: (string, int) Map.t = <abstr>
# val t1 = Map.add "b" 2 (Map.add "a" 1 Map.empty);;
val t1: (string, int) Map.t = <abstr>
# t1 == t2;;
val it: bool = false
# val t2 = Map.add 10 100 Map.empty;;
val t2: (int, int) Map.t = <abstr>
# val t1 = Map.add 10 100 Map.empty;;
val t1: (int, int) Map.t = <abstr>
# t1 == t2;;
val it: bool = false
제 생각에는 말씀하신 예제에서 true가 나온 것이 우연인 것 같습니다.
개인적으로는 =을 구현하기 위해서 Map.fold 등 몇몇 함수를 이용하고,
Map의 Map까지 고려하느라 꽤 오랜 시간을 썼습니다. |
|
| 위로 |
|
 |
신해수 손님
|
올려짐: 2007년10월20일 0:58 주제: Re: nml의 레코드 |
|
|
헉. 지금보니까 제가 쓴건 ==이었군요.
그럼에도 불구하고..
# val t2 = Map.add "b" 2 (Map.add "a" 1 Map.empty);;
val t2: (string, int) Map.t = <abstr>
# val t1 = Map.add "a" 1 (Map.add "b" 2 Map.empty);;
val t1: (string, int) Map.t = <abstr>
# t1 = t2;;
val it: bool = false
라는 점에서 문제가 되지 않나 싶습니다.
물론 {a := 1, b := 2} != {b := 2, a := 1}이라고 정의하면 될지도 모르겠습니다만.. |
|
| 위로 |
|
 |
|
|
새로운 주제를 올릴 수 없습니다 답글을 올릴 수 없습니다 주제를 수정할 수 없습니다 올린 글을 삭제할 수 없습니다 투표를 할 수 없습니다
|
Powered by phpBB 2.0.21-7 (Debian) © 2001, 2005 phpBB Group Translated by kss & drssay
|