Annotation of researchv10no/cmd/sml/lib/standard.sml, revision 1.1.1.1

1.1       root        1: (* Standard environment, as defined in Definition of SML, Version 2 *)
                      2: 
                      3: structure Standard = 
                      4:   struct
                      5: 
                      6:     infix 7 * / div mod
                      7:     infix 6 + - ^
                      8:     infixr 5 :: @
                      9:     infix 4 = <> < > <= >=
                     10:     infix 3 o :=
                     11: 
                     12:     val ! = Ref.!
                     13:     val op := = Ref.:=
                     14:     val not = Bool.not
                     15:     val floor = Real.floor
                     16:     val truncate = Real.truncate
                     17:     val ceiling = Real.ceiling
                     18:     val real = Real.real
                     19:     val sin = Real.sin and cos = Real.cos 
                     20:     and sqrt = Real.sqrt and arctan = Real.arctan
                     21:     and exp = Real.exp and ln = Real.ln
                     22:     and rev = List.rev and map = List.map and op @ = List.@
                     23:     exception Floor=Real.Floor and Sqrt=Real.Sqrt
                     24:     exception Exp=Real.Exp and Ln=Real.Ln
                     25:     val op / = Real./
                     26:     
                     27:     exception Mod
                     28:     exception Quot
                     29:     exception Prod
                     30:     exception Sum
                     31:     exception Diff
                     32:     exception Chr = String.Chr and Ord = String.Ord
                     33:     exception Div = Integer.Div
                     34: 
                     35:     val op + = fn (a,b) => Integer.+(a,b) handle Integer.Overflow => raise Sum
                     36:     val op * = fn (a,b) => Integer.*(a,b) handle Integer.Overflow => raise Prod
                     37:     val op div = fn (a,b) =>
                     38:        (if Integer.>=(a,0)
                     39:        then if Integer.>=(b,0)
                     40:             then Integer.div(a,b)
                     41:             else Integer.-(Integer.div(Integer.-(a,1),b),1)
                     42:        else if Integer.>=(b,0)
                     43:             then Integer.-(Integer.div(Integer.+(a,1),b),1)
                     44:             else Integer.div(a,b)) handle Integer.Overflow => raise Div
                     45:     val op - = fn (a,b) => Integer.-(a,b) handle Integer.Overflow => raise Diff
                     46:     val op mod = fn (a,b) => Integer.-(a,Integer.*(a div b,b))
                     47:                             handle Div => raise Mod
                     48:                                  | Integer.Overflow => raise Mod
                     49:     structure BasicIO : BASICIO = IO
                     50:     open BasicIO
                     51:     val output = fn (f,s) => output f s
                     52:     val input = fn (f,i) => input f i
                     53:     val size = String.size
                     54:     val explode = String.explode and implode = String.implode
                     55:     val op ^ = String.^
                     56:     val chr = String.chr and ord = String.ord
                     57:         
                     58:     val op o = General.o and op = = General.= and op <> = General.<>
                     59:     exception Bind= General.Bind and Match = General.Match
                     60:     exception Interrupt = General.Interrupt
                     61:   end (* structure Standard *)
                     62: 
                     63: structure Standard =
                     64:   struct
                     65:     open Standard
                     66:     overload ~ : ('a->'a) as Integer.~ and Real.~
                     67:     overload + : ('a*'a -> 'a) as Standard.+ and Real.+
                     68:     overload - : ('a*'a -> 'a) as Standard.- and Real.-
                     69:     overload * : ('a*'a -> 'a) as Standard.* and Real.*
                     70:     overload < : ('a*'a -> bool) as Integer.< and Real.<
                     71:     overload > : ('a*'a -> bool) as Integer.> and Real.>
                     72:     overload <= : ('a*'a -> bool) as Integer.<= and Real.<=
                     73:     overload >= : ('a*'a -> bool) as Integer.>= and Real.>=
                     74:     overload abs : ('a->'a) as Integer.abs and Real.abs
                     75: 
                     76:   end (* structure Environ *)

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.