mirror of
https://github.com/CatalaLang/catala.git
synced 2024-09-20 00:41:05 +03:00
change operator definition style to something more readable
This commit is contained in:
parent
a4466fecc7
commit
51b5ccb08e
@ -404,19 +404,19 @@ let translate :
|
||||
| Eq_dur_dur -> Eq_dur_dur
|
||||
|
||||
let monomorphic_type (op, pos) =
|
||||
let ( @-> ) a b =
|
||||
TArrow (List.map (fun tau -> TLit tau, pos) a, (TLit b, pos)), pos
|
||||
let args, ret =
|
||||
match op with
|
||||
| Not -> [TBool], TBool
|
||||
| GetDay -> [TDate], TInt
|
||||
| GetMonth -> [TDate], TInt
|
||||
| GetYear -> [TDate], TInt
|
||||
| FirstDayOfMonth -> [TDate], TDate
|
||||
| LastDayOfMonth -> [TDate], TDate
|
||||
| And -> [TBool; TBool], TBool
|
||||
| Or -> [TBool; TBool], TBool
|
||||
| Xor -> [TBool; TBool], TBool
|
||||
in
|
||||
match op with
|
||||
| Not -> [TBool] @-> TBool
|
||||
| GetDay -> [TDate] @-> TInt
|
||||
| GetMonth -> [TDate] @-> TInt
|
||||
| GetYear -> [TDate] @-> TInt
|
||||
| FirstDayOfMonth -> [TDate] @-> TDate
|
||||
| LastDayOfMonth -> [TDate] @-> TDate
|
||||
| And -> [TBool; TBool] @-> TBool
|
||||
| Or -> [TBool; TBool] @-> TBool
|
||||
| Xor -> [TBool; TBool] @-> TBool
|
||||
TArrow (List.map (fun tau -> TLit tau, pos) args, (TLit ret, pos)), pos
|
||||
|
||||
(** Rules for overloads definitions:
|
||||
|
||||
@ -432,63 +432,63 @@ let monomorphic_type (op, pos) =
|
||||
['a], ['b] and ['c], there should be a unique solution for the third. *)
|
||||
|
||||
let resolved_type (op, pos) =
|
||||
let ( @-> ) a b =
|
||||
TArrow (List.map (fun tau -> TLit tau, pos) a, (TLit b, pos)), pos
|
||||
let args, ret =
|
||||
match op with
|
||||
| Minus_int -> [TInt], TInt
|
||||
| Minus_rat -> [TRat], TRat
|
||||
| Minus_mon -> [TMoney], TMoney
|
||||
| Minus_dur -> [TDuration], TDuration
|
||||
| ToRat_int -> [TInt], TRat
|
||||
| ToRat_mon -> [TMoney], TRat
|
||||
| ToMoney_rat -> [TRat], TMoney
|
||||
| Round_rat -> [TRat], TRat
|
||||
| Round_mon -> [TMoney], TMoney
|
||||
| Add_int_int -> [TInt; TInt], TInt
|
||||
| Add_rat_rat -> [TRat; TRat], TRat
|
||||
| Add_mon_mon -> [TMoney; TMoney], TMoney
|
||||
| Add_dat_dur -> [TDate; TDuration], TDate
|
||||
| Add_dur_dur -> [TDuration; TDuration], TDuration
|
||||
| Sub_int_int -> [TInt; TInt], TInt
|
||||
| Sub_rat_rat -> [TRat; TRat], TRat
|
||||
| Sub_mon_mon -> [TMoney; TMoney], TMoney
|
||||
| Sub_dat_dat -> [TDate; TDate], TDuration
|
||||
| Sub_dat_dur -> [TDate; TDuration], TDuration
|
||||
| Sub_dur_dur -> [TDuration; TDuration], TDuration
|
||||
| Mult_int_int -> [TInt; TInt], TInt
|
||||
| Mult_rat_rat -> [TRat; TRat], TRat
|
||||
| Mult_mon_rat -> [TMoney; TRat], TMoney
|
||||
| Mult_dur_int -> [TDuration; TInt], TDuration
|
||||
| Div_int_int -> [TInt; TInt], TRat
|
||||
| Div_rat_rat -> [TRat; TRat], TRat
|
||||
| Div_mon_mon -> [TMoney; TMoney], TRat
|
||||
| Div_mon_rat -> [TMoney; TRat], TMoney
|
||||
| Lt_int_int -> [TInt; TInt], TBool
|
||||
| Lt_rat_rat -> [TRat; TRat], TBool
|
||||
| Lt_mon_mon -> [TMoney; TMoney], TBool
|
||||
| Lt_dat_dat -> [TDate; TDate], TBool
|
||||
| Lt_dur_dur -> [TDuration; TDuration], TBool
|
||||
| Lte_int_int -> [TInt; TInt], TBool
|
||||
| Lte_rat_rat -> [TRat; TRat], TBool
|
||||
| Lte_mon_mon -> [TMoney; TMoney], TBool
|
||||
| Lte_dat_dat -> [TDate; TDate], TBool
|
||||
| Lte_dur_dur -> [TDuration; TDuration], TBool
|
||||
| Gt_int_int -> [TInt; TInt], TBool
|
||||
| Gt_rat_rat -> [TRat; TRat], TBool
|
||||
| Gt_mon_mon -> [TMoney; TMoney], TBool
|
||||
| Gt_dat_dat -> [TDate; TDate], TBool
|
||||
| Gt_dur_dur -> [TDuration; TDuration], TBool
|
||||
| Gte_int_int -> [TInt; TInt], TBool
|
||||
| Gte_rat_rat -> [TRat; TRat], TBool
|
||||
| Gte_mon_mon -> [TMoney; TMoney], TBool
|
||||
| Gte_dat_dat -> [TDate; TDate], TBool
|
||||
| Gte_dur_dur -> [TDuration; TDuration], TBool
|
||||
| Eq_int_int -> [TInt; TInt], TBool
|
||||
| Eq_rat_rat -> [TRat; TRat], TBool
|
||||
| Eq_mon_mon -> [TMoney; TMoney], TBool
|
||||
| Eq_dat_dat -> [TDate; TDate], TBool
|
||||
| Eq_dur_dur -> [TDuration; TDuration], TBool
|
||||
in
|
||||
match op with
|
||||
| Minus_int -> [TInt] @-> TInt
|
||||
| Minus_rat -> [TRat] @-> TRat
|
||||
| Minus_mon -> [TMoney] @-> TMoney
|
||||
| Minus_dur -> [TDuration] @-> TDuration
|
||||
| ToRat_int -> [TInt] @-> TRat
|
||||
| ToRat_mon -> [TMoney] @-> TRat
|
||||
| ToMoney_rat -> [TRat] @-> TMoney
|
||||
| Round_rat -> [TRat] @-> TRat
|
||||
| Round_mon -> [TMoney] @-> TMoney
|
||||
| Add_int_int -> [TInt; TInt] @-> TInt
|
||||
| Add_rat_rat -> [TRat; TRat] @-> TRat
|
||||
| Add_mon_mon -> [TMoney; TMoney] @-> TMoney
|
||||
| Add_dat_dur -> [TDate; TDuration] @-> TDate
|
||||
| Add_dur_dur -> [TDuration; TDuration] @-> TDuration
|
||||
| Sub_int_int -> [TInt; TInt] @-> TInt
|
||||
| Sub_rat_rat -> [TRat; TRat] @-> TRat
|
||||
| Sub_mon_mon -> [TMoney; TMoney] @-> TMoney
|
||||
| Sub_dat_dat -> [TDate; TDate] @-> TDuration
|
||||
| Sub_dat_dur -> [TDate; TDuration] @-> TDuration
|
||||
| Sub_dur_dur -> [TDuration; TDuration] @-> TDuration
|
||||
| Mult_int_int -> [TInt; TInt] @-> TInt
|
||||
| Mult_rat_rat -> [TRat; TRat] @-> TRat
|
||||
| Mult_mon_rat -> [TMoney; TRat] @-> TMoney
|
||||
| Mult_dur_int -> [TDuration; TInt] @-> TDuration
|
||||
| Div_int_int -> [TInt; TInt] @-> TRat
|
||||
| Div_rat_rat -> [TRat; TRat] @-> TRat
|
||||
| Div_mon_mon -> [TMoney; TMoney] @-> TRat
|
||||
| Div_mon_rat -> [TMoney; TRat] @-> TMoney
|
||||
| Lt_int_int -> [TInt; TInt] @-> TBool
|
||||
| Lt_rat_rat -> [TRat; TRat] @-> TBool
|
||||
| Lt_mon_mon -> [TMoney; TMoney] @-> TBool
|
||||
| Lt_dat_dat -> [TDate; TDate] @-> TBool
|
||||
| Lt_dur_dur -> [TDuration; TDuration] @-> TBool
|
||||
| Lte_int_int -> [TInt; TInt] @-> TBool
|
||||
| Lte_rat_rat -> [TRat; TRat] @-> TBool
|
||||
| Lte_mon_mon -> [TMoney; TMoney] @-> TBool
|
||||
| Lte_dat_dat -> [TDate; TDate] @-> TBool
|
||||
| Lte_dur_dur -> [TDuration; TDuration] @-> TBool
|
||||
| Gt_int_int -> [TInt; TInt] @-> TBool
|
||||
| Gt_rat_rat -> [TRat; TRat] @-> TBool
|
||||
| Gt_mon_mon -> [TMoney; TMoney] @-> TBool
|
||||
| Gt_dat_dat -> [TDate; TDate] @-> TBool
|
||||
| Gt_dur_dur -> [TDuration; TDuration] @-> TBool
|
||||
| Gte_int_int -> [TInt; TInt] @-> TBool
|
||||
| Gte_rat_rat -> [TRat; TRat] @-> TBool
|
||||
| Gte_mon_mon -> [TMoney; TMoney] @-> TBool
|
||||
| Gte_dat_dat -> [TDate; TDate] @-> TBool
|
||||
| Gte_dur_dur -> [TDuration; TDuration] @-> TBool
|
||||
| Eq_int_int -> [TInt; TInt] @-> TBool
|
||||
| Eq_rat_rat -> [TRat; TRat] @-> TBool
|
||||
| Eq_mon_mon -> [TMoney; TMoney] @-> TBool
|
||||
| Eq_dat_dat -> [TDate; TDate] @-> TBool
|
||||
| Eq_dur_dur -> [TDuration; TDuration] @-> TBool
|
||||
TArrow (List.map (fun tau -> TLit tau, pos) args, (TLit ret, pos)), pos
|
||||
|
||||
let resolve_overload_aux (op : ('a, overloaded) t) (operands : typ_lit list) :
|
||||
('b, resolved) t * [ `Straight | `Reversed ] =
|
||||
|
Loading…
Reference in New Issue
Block a user