## convert-monoarg-to-multiarg-anormcode.pkg
# Compiled by:
#
src/lib/compiler/core.sublib### "Life must be lived as play."
###
### -- Plato
stipulate
package acf = anormcode_form; # anormcode_form is from
src/lib/compiler/back/top/anormcode/anormcode-form.pkg package hcf = highcode_form; # highcode_form is from
src/lib/compiler/back/top/highcode/highcode-form.pkg package hct = highcode_type; # highcode_type is from
src/lib/compiler/back/top/highcode/highcode-type.pkg package tmp = highcode_codetemp; # highcode_codetemp is from
src/lib/compiler/back/top/highcode/highcode-codetemp.pkg package hut = highcode_uniq_types; # highcode_uniq_types is from
src/lib/compiler/back/top/highcode/highcode-uniq-types.pkg package lcf = lambdacode_form; # lambdacode_form is from
src/lib/compiler/back/top/lambdacode/lambdacode-form.pkgherein
api Convert_Monoarg_To_Multiarg_Anormcode {
Llty = hut::Uniqtypoid;
Ltyc = hut::Uniqtype;
Flty = hut::Uniqtypoid;
Ftyc = hut::Uniqtype;
Expression = acf::Expression;
Value = acf::Value;
Variable = tmp::Codetemp;
# The following functions are used in
#
#
src/lib/compiler/back/top/lambdacode/translate-lambdacode-to-anormcode.pkg #
ltc_raw: Llty -> Flty;
tcc_raw: Ltyc -> Ftyc;
t_pflatten: Llty -> (Bool, List(Llty), Bool);
v_punflatten: Llty -> ( (Bool, List(Llty), Bool),
((Variable, Expression) -> (List(Variable), Expression))
);
v_pflatten: Llty -> ( (Bool, List(Llty), Bool),
(Value -> (List(Value), Expression -> Expression))
);
# The following functions are used in
#
#
src/lib/compiler/back/top/improve/specialize-anormcode-to-least-general-type.pkg #
t_flatten: ((List( Flty ), Bool)) -> (Bool, List( Flty ), Bool);
v_unflatten: ((List( Flty ), Bool)) ->
((((Bool, List( Flty ), Bool)) ,
(((List( Variable ), Expression)) -> ((List( Variable ), Expression)))));
v_flatten: ((List( Flty ), Bool)) ->
((((Bool, List( Flty ), Bool)) ,
(List( Value ) -> ((List( Value ), (Expression -> Expression))))));
# The following function is used during
# representation analysis in
#
#
src/lib/compiler/back/top/forms/make-anormcode-coercion-fn.pkg
#
v_coerce: (Bool, List( Ftyc ), List( Ftyc )) ->
((List( Ftyc ),
Null_Or( List( Value ) -> ((List( Value ), (Expression -> Expression))))));
};
end;
## Copyright (c) 1997 YALE FLINT PROJECT
## Subsequent changes by Jeff Prothero Copyright (c) 2010-2015,
## released per terms of SMLNJ-COPYRIGHT.