sig
type symbol
type associativity =
AssocLeft
| NonAssoc
| AssocRight
| EnclosedBy of string * string
val as_symbol : MiniAst.tname -> MiniAlgebra.symbol option
val associativity : MiniAlgebra.symbol -> MiniAlgebra.associativity
val priority : MiniAlgebra.symbol -> int
val infix : MiniAlgebra.symbol -> bool
type 'a environment = MiniAst.tname -> 'a CoreAlgebra.arterm
val tuple :
'a MiniAlgebra.environment ->
'a CoreAlgebra.arterm list -> 'a CoreAlgebra.arterm
val pre :
'a MiniAlgebra.environment ->
'a CoreAlgebra.arterm -> 'a CoreAlgebra.arterm
val abs : 'a MiniAlgebra.environment -> 'a CoreAlgebra.arterm
val record_constructor :
'a MiniAlgebra.environment ->
'a CoreAlgebra.arterm -> 'a CoreAlgebra.arterm
val arrow :
'a MiniAlgebra.environment ->
'a CoreAlgebra.arterm -> 'a CoreAlgebra.arterm -> 'a CoreAlgebra.arterm
val n_arrows :
'a MiniAlgebra.environment ->
'a CoreAlgebra.arterm list ->
'a CoreAlgebra.arterm -> 'a CoreAlgebra.arterm
val result_type :
'a MiniAlgebra.environment ->
'a CoreAlgebra.arterm -> 'a CoreAlgebra.arterm
val arg_types :
'a MiniAlgebra.environment ->
'a CoreAlgebra.arterm -> 'a CoreAlgebra.arterm list
val tycon_args : 'a CoreAlgebra.arterm -> 'a CoreAlgebra.arterm list
val tycon_name : 'a CoreAlgebra.arterm -> 'a CoreAlgebra.arterm
val type_of_primitive :
'a MiniAlgebra.environment -> MiniAst.primitive -> 'a CoreAlgebra.arterm
type builtin_dataconstructor =
MiniAst.dname * MiniAst.tname list * MiniAst.typ
val init_builtin_env :
(?name:MiniAst.tname -> unit -> 'a) ->
(MiniAst.tname *
(MiniAst.kind * 'a CoreAlgebra.arterm *
MiniAlgebra.builtin_dataconstructor list))
list
val builtin_env :
(MiniAst.tname *
(bool * MiniAlgebra.associativity * int * MiniAst.kind *
(MiniAst.dname * MiniAst.tname list * MiniAst.typ) list))
array
end