| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
한재화
가입: 2007년 10월 6일 올린 글: 25
|
올려짐: 2007년10월7일 13:43 주제: Map 스트럭쳐는 두가지 타입의 값을 가질 수 없나요? |
|
|
환경의 확장된 정의에 따라서 해보려니, Map 스트럭쳐가 두가지 이상의 타입을 value로 갖지 못하는 문제가 있네요.
| 코드: |
val k = Map.empty
val k = Map.add "asdf" 1 k;;
val k = Map.add "asdf "ss" k;;
|
를 실행하면,
| 인용: |
(string,string) Map.t 타입이어야 하는데 (string,int) Map.t 타입입니다.
|
라고 나오네요..
그렇다면, 하나는 Addr을 value 로 갖고 있는 Map과 또 다른 하나는 Procedure를 value로 갖고 있는 Map 을 만들어서 두개를 운영해야하나요?  |
|
| 위로 |
|
 |
한재화
가입: 2007년 10월 6일 올린 글: 25
|
올려짐: 2007년10월7일 13:54 주제: 아.. 또 자답이 되었네요. |
|
|
타입을 따로 정의하면 되는군요.
| 코드: |
type key = KEY of string
type val = A of string | B of int
val k = Map.empty
val k = Map.add (KEY "asdf") (A 3) k
val k = Map.add (KEY "aaaa") (B "a") k
|
이렇게 하면 잘 되네요.. ;ㅅ; |
|
| 위로 |
|
 |
남기웅 손님
|
올려짐: 2007년10월7일 16:42 주제: |
|
|
메모리의 Map에서 procedure 를 처리하는 방법도 있군요.
저는 환경= id -> add + procedure
이렇게 되있길래 그냥 env의 Map 대상인 env_entry의 타입을
Addr of Loc.t
| Proc of procedure
이렇게 두가지로 두고 했는데요.
procedure 타입을 따로 정의한 것은 똑같은 것 같은데,
그것을 환경에서 처리할 지 메모리에서 처리할 지... 흠흠 |
|
| 위로 |
|
 |
남기웅 손님
|
올려짐: 2007년10월7일 16:45 주제: |
|
|
| 아 제가 잘못 봤네요. 똑같이 환경의 Map을 바꾸는 방법이네요. |
|
| 위로 |
|
 |
|