src/Pure/General/same.ML
changeset 32025 e8fbfa84c23f
parent 32022 c2f4ee07647f
child 78712 c2c4d51b048b
equal deleted inserted replaced
32024:a5e7c8e60c85 32025:e8fbfa84c23f
     8 signature SAME =
     8 signature SAME =
     9 sig
     9 sig
    10   exception SAME
    10   exception SAME
    11   type ('a, 'b) function = 'a -> 'b  (*exception SAME*)
    11   type ('a, 'b) function = 'a -> 'b  (*exception SAME*)
    12   type 'a operation = ('a, 'a) function  (*exception SAME*)
    12   type 'a operation = ('a, 'a) function  (*exception SAME*)
       
    13   val same: ('a, 'b) function
    13   val commit: 'a operation -> 'a -> 'a
    14   val commit: 'a operation -> 'a -> 'a
    14   val function: ('a -> 'b option) -> ('a, 'b) function
    15   val function: ('a -> 'b option) -> ('a, 'b) function
    15   val capture: ('a, 'b) function -> 'a -> 'b option
    16   val capture: ('a, 'b) function -> 'a -> 'b option
    16   val map: 'a operation -> 'a list operation
    17   val map: 'a operation -> 'a list operation
    17   val map_option: ('a, 'b) function -> ('a option, 'b option) function
    18   val map_option: ('a, 'b) function -> ('a option, 'b option) function
    23 exception SAME;
    24 exception SAME;
    24 
    25 
    25 type ('a, 'b) function = 'a -> 'b;
    26 type ('a, 'b) function = 'a -> 'b;
    26 type 'a operation = ('a, 'a) function;
    27 type 'a operation = ('a, 'a) function;
    27 
    28 
       
    29 fun same _ = raise SAME;
    28 fun commit f x = f x handle SAME => x;
    30 fun commit f x = f x handle SAME => x;
    29 
    31 
    30 fun capture f x = SOME (f x) handle SAME => NONE;
    32 fun capture f x = SOME (f x) handle SAME => NONE;
    31 
    33 
    32 fun function f x =
    34 fun function f x =