?. , ?. ??-?-?-rr?s, ?. ??-?-?-tr?-??@bullet??rs-??é??@bullet??t?-?-?-s?-?é?, ?. ???-@bullet?s-tr-?-?s-rè?@bullet?s-s????, ?. et al., nclos m (m, u, ne) e ? args ? ) s? ???s ??????? r???????t ???????s? (nUnknown (m + 1) ?)? u ?st ?? tr????t??? ?? t? s? ?? ????r? ???r?????ts ?é?à ??ssés |args| ?st ???ér???r à ???r?té ?? ?? ??r??t?r? ?é??rr??é?? s? args ??rr?s???? à args ? ??s?à???s ?? (nUnknown (|args|)[]) ?t s? ??sm) n!? ?r? ?? s????t ???? t?r?? ???s ?s??s ??r????? ???r??? ??????r

?. ??-?e-?-?-?v-?t-?e-?-?-ne and ?. , s ??s tr??s ?r??r?étés s?????t?s ? ?? ?é??rr????t??? ??rt??é? ? s? µe ? t a ? (t, µe a ) ?t µe ? ? ne ???rs ?nv a , ne ? [[t a ]] ? ? nv a ?t (t, µe a ) ? nv a ? s? µe ? t b ? µv b ?t µe ? ? ne ???rs ?nv b , ne ? [[t b ]] ? ? nv b ?t µv b ? nv b ? s? µv b :: µe a ? t ? µv ?t µv b :: µe a ? ? ? ne ? ???rs ?nv

?. , ?. ??-?-?-s-?-?-?-@bullet?q??r-@bullet???-?-?-t?ès?, ?. ?. , ?. S?r-@bullet?é??@bullet??t?, ?. ??-t-?t-?-?-?s et al., (µclos m b µe a1 args)? ?? ????t nv a = (nclos m (m, u, ne a1 ) ne c args ? ) ?ù µe a1 ? ?a 1 ne a1 , |args| ? m ?t args ? nUnknown (m+1) [] args ? ?t µe a1 ? ?a 1 ne a1 ? ???s ?????s ??st?????r s??, µclos m b µe a1 (µv b :: args)) ?t nv = (nclos m (m, u, ne a1 ) ne c (nv b :: args ? )) ?t ?? rés??t?t s? ?é???tr? ??r ??? ???????t??? ?? ?? rè??? ??é?????t??? ?? ?????????t??? ??? ?t ?? ???tr??t ??r ???str??t??? (µclos m b µe a1 µv b :: args) ? (nclos m (m, u, ne a1 ) ne c (nv b :: args ? ))?

?. ?@bullet, ?. , ?. , ?. ?s, ?. ?. et al., nv b :: args ? )@ne a1, nv b :: args ? )@ne a1 ) ? u ? nv ?t µv ? nv? ????????t ?? tr????t??? ?? t a ?st ?? ??

?. , ?. ?. Tr?r-q??-!-]-s?é??@bullet??, ?. Nv, ?. ?. , @. ?. et al., (nv b :: args ? :: (m, u, ne a1 ))@ne c )? P??r ???? ???s ?t???s??s ?? rés??t?t ??t?r?é????r? s?????t ? ?? |args| = n ?t (v :: args)@me ? m ? vres ???rs (v :: args ? )@((n, m, me) :: e ? ) ? (n + 1)![n!

?. ?. P?r-???s, ?. ?r, ?. ?é???r?-q??, and ?. Ne, ? = n! [[args]] ? ? t a = napp n! args ?t q?? ?(n) = Known |args|? ?? ???s? ??t??s [[args]] ? = nargs? ???s ????s µe ? ? ne? ?? ????t µe(n) = (µclos |args| b e ? [])? ?? ?à? ???s ?t???s??s ?? ??rr?s, ) = (|args|, u, ne ? ) ?t (µclos |args| t e ? []) ? (Known |args|) (|args|, u, ne ? )? ???s ????s ?? ????t?ès? µe ? napp n! args ? (t ? , e)

?. ?-?s-?t?@bullet?s-?-?-s-@bullet?-rés?@bullett?t-?-?-t?r-?-É????r?-s????, ?. , ?. ??-e-?-napp-n, !. , ?. et al., = (µclos |args| t e ? (rev vargs)) s? µe(n) = (µclos |args| b e ? []) ?t µe ? args ? vargs? ?? ???s? ???s s????s q?? ?? tr??s??r??t??? ?? t a ?st ??? ???r???t??? ?? m ???????t???s ??rr??é?s ?? n! ??? é?é???ts ?? nargs ?NCurry(|args|) n!) nargs? ?? ?t???s??t ??????t?ès? ???????t??? ?ss???é? à ??é?????t??? ?? t a ? ???s ??t????s ? ne ? ?t (µclos |args| t e ? (rev vargs)) ? nv a ? ???s ?ss????s ???? ???? s????r ?? ??? ???s s?r nv a ? ?? s??t q?? ne ? (NCurry(|args|) n!) ? (nclos |args| (|args|, u, ne ? ) ne []) ??? ?? rè??? ?????????rr??? ?? ???s? ?? ne ? Nnapp (NCurry(|args|) n!) nargs ? nv 1 ? ?? ?é???t ? ?nvargs, ne ? nargs ? nvargs ?t nv a = (nclos |args| (|args|, u, ne ? ) ne (rev nvargs))? ???s ????s ?, tr? ??r??t?r?s µ?? ?t ??? s?????t? ? (µclos |args| t µe ? (rev vargs)) ? (nclos |args| (|args|, u, ne ? ) ne (rev nvargs))? ???? q?? ???s ????s ??r??tér?sé ??s ??r??t?r?s? ???s ?????s tr??t?r ??s ???? rè???s ??????s??t à ??? ??rr?s???????? ??

?. , ?. , @. , ?. ?. , ?. S?r-@bullet?é??@bullet??t? et al., 0!] ? nv? ?r ???s ????s à ???tr?r ? ?nv, (nv2 :: (rev nvargs)@ne) ? u ? nv? ???s ????s ?? rés??t?t s?????t ? ?? |args| = n ?t (nv2 :: (rev nvargs)@(n, u, ne ? ) :: e ? ) ? (m + 1)! [m!; . . . ; 0!] ? nv ???rs (nv2 :: (rev nvargs)@ne)

?. , ?. ?. , ?. , ?. ?. , ?. et al., ?s t 1 ???s ?? t?r?? t 2 ? ?? ?????? ?? ??é?????t???? ?? ???s ???t ????t?r ??s ?????rs ?? ??r??t?r?s ré??rs???s (t, e) rec ???s? q?? ???? rè???s ??é?????t???s s????????s à, m, me) rec s? ??s, rev vargs)@e ? ) ? (nUnknown (|args|+1) ?) (nv