Ocaml

OCaml의 Map

seungh2 2021. 9. 9. 11:20

OCaml에서 기본적으로 제공하는 Map을 사용해보자.

Map.Make(type) 모듈
type에는 key의 타입이 들어간다. ex) Map.Make(String)
key의 타입만 지정해주고 value의 타입은 지정하지 않기 때문에 value는 그냥 add할 때 아무거나 타입을 넣으면 된다.
(그렇다고 value 타입이 다 달라도 되는 건 아닌거 같다. 같아야되는듯!)

  • empty
    • 빈 map을 만들어서 반환
  • singleton
    • singleton key value
    • key와 value를 가진 map을 반환. 즉, element를 하나 갖는다.
  • add
    • add key value map
    • map에 key와 value를 넣은 map을 반환한다.
  • find
    • find key map
    • map에서 key에 해당하는 value를 반환한다.
  • is_empty
    • is_empty map
    • map이 비어있으면 true 그렇지 않으면 false를 반환한다.
  • mem
    • mem key map
    • map에서 key가 있으면 true, 그렇지 않으면 false를 반환한다.
  • remove
    • remove key map
    • map에서 key와 key에 해당하는 value를 삭제한 map을 반환한다.
  • iter
    • iter function map
    • map에 있는 key와 value에 대해 function을 수행한다.


1. empty로 m을 생성하고 is_empty를 이용해 비어있는지 확인한다.  (empty는 비어있는 맵을 만들기 때문에 true가 출력된다.)
2. 1 - 7, 2 - 6, 3 - 5를 m에 넣는다.
3. print_user 함수을 정의하고 이것과 iter를 이용하여 m의 요소를 출력한다.
4. find를 이용하여 m에서 key가 2인 value를 찾아와 출력한다.
5. mem을 이용하여 m에 key가 2인 요소가 있으면 true를 출력하고 그렇지 않으면 false를 출력한다.
6. singleton을 이용하여 n을 생성하고 is_empty를 이용해 비어있는지 확인한다. (singleton은 요소 1개가 있도록 맵을 만들기 때문에 false가 출력된다.)
7. iter와 anonymous function을 이용하여 n의 요소를 출력한다.
8. remove를 이용하여 n에서 key가 1인 요소를 빼고 is_empty를 이용해 n이 비었는지 확인한다. (singleton을 이용해서 생성하였기 때문에 요소가 1개 있었는데 이를 remove를 이용하여 지웠기 때문에 n이 비어있는 map이 되면서 true가 출력된다.)

728x90