PreviousUpNext

15.3.214  src/lib/compiler/back/top/lambdacode/convert-monoarg-to-multiarg-anormcode.api

## 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.pkg
herein

    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.


Comments and suggestions to: bugs@mythryl.org

PreviousUpNext