Advertisement
Guest User

dict.fs

a guest
May 26th, 2014
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
F# 0.76 KB | None | 0 0
  1. module dict
  2.  
  3. exception KeyNotFound
  4.  
  5. type dict<'a> =
  6.    | Null
  7.    | Node of string * 'a * dict<'a> * dict<'a>
  8.  
  9. let empty = Null
  10.  
  11. let rec lookup k dict =
  12.     match dict with
  13.     | Null -> raise KeyNotFound
  14.     | Node(key, value, l, r) when key = k -> value
  15.     | Node(key, value, l, r) -> if (k > key) then lookup k r else lookup k l
  16.  
  17. let rec insert k d dict =
  18.     match dict with
  19.     | Null -> Node(k, d, Null, Null)
  20.     | Node(key, value, l, r) when k = key -> Node(key, d, l, r)
  21.     | Node(key, value, l, r) when k < key -> Node(key, value, insert k d l, r)
  22.     | Node(key, value, l, r) -> Node(key, value, l, insert k d r)
  23.  
  24. let rec toList dict =
  25.     match dict with
  26.     | Null -> []
  27.     | Node(key, value, l, r) -> (toList l)@[(key,value)]@(toList r)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement