home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / C / Applications / Moscow ML 1.42 / src / mosmllib / Option.sml < prev    next >
Encoding:
Text File  |  1997-08-18  |  596 b   |  34 lines  |  [TEXT/R*ch]

  1. (* Option *)
  2.  
  3. exception Option
  4.  
  5. fun getOpt (SOME v, _) = v
  6.   | getOpt (NONE,   a) = a;
  7.  
  8. fun isSome (SOME _) = true 
  9.   | isSome NONE     = false;
  10.  
  11. fun valOf (SOME v) = v
  12.   | valOf NONE     = raise Option;
  13.  
  14. fun filter p x = if p x then SOME x else NONE
  15.  
  16. fun map f NONE     = NONE
  17.   | map f (SOME x) = SOME (f x)
  18.  
  19. fun join NONE     = NONE
  20.   | join (SOME x) = x
  21.  
  22. fun mapPartial f NONE     = NONE
  23.   | mapPartial f (SOME x) = f x
  24.  
  25. fun compose (f, g) x = 
  26.     case g x of
  27.     NONE   => NONE
  28.       | SOME y => SOME (f y)
  29.  
  30. fun composePartial (f, g) x = 
  31.     case g x of
  32.     NONE   => NONE
  33.       | SOME y => f y
  34.