Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] View of /sml/trunk/src/system/Basis/Implementation/option.sml
ViewVC logotype

View of /sml/trunk/src/system/Basis/Implementation/option.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1479 - (download) (annotate)
Thu Apr 22 21:37:35 2004 UTC (16 years, 9 months ago) by mblume
File size: 752 byte(s)
fixed problem with two different versions of exception Option
(* option.sml
 *
 * COPYRIGHT (c) 1997 AT&T Labs Research.
 *)

structure Option : OPTION =
  struct
    open Assembly (* for type 'a option *)

    exception Option = Option

    fun getOpt (SOME x, y) = x
      | getOpt (NONE, y) = y
    fun isSome (SOME _) = true
      | isSome NONE = false
    fun valOf (SOME x) = x
      | valOf _ = raise Option

    fun filter pred x = if (pred x) then SOME x else NONE
    fun join (SOME opt) = opt
      | join NONE = NONE
    fun app f (SOME x) = f x
      | app f NONE = ()
    fun map f (SOME x) = SOME(f x)
      | map f NONE = NONE
    fun mapPartial f (SOME x) = f x
      | mapPartial f NONE = NONE
    fun compose (f, g) x = map f (g x)
    fun composePartial (f, g) x = mapPartial f (g x)

  end;



root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0