S.I/Lisp/

PROLOG




{A1}=STATEMENT("Spreadsheet Lisp", "is", "fun to learn")
-> "'{1} {2} {3}.'('Spreadsheet Lisp', 'is', 'fun to learn')."

=QUESTION(A:A, "Is", "Spreadsheet Lisp", "fun to learn")
-> TRUE
        



DEFINE(
    STATEMENT,
    LAMBDA(
        fragment1,
        [fragment2],
        [fragment3],
        [fragment4],
        [fragment5],
        [fragment6],
        [fragment7],
        [fragment8],
        [fragment9],
        [fragment10],
        LET(
            arity,
                ARITY(
                    fragment1,
                    fragment2,
                    fragment3,
                    fragment4,
                    fragment5,
                    fragment6,
                    fragment7,
                    fragment8,
                    fragment9,
                    fragment10),
            template,
                CHOOSE(
                    arity,
                    "('{1}').",
                    "('{1}', '{2}').",
                    "('{1}', '{2}', '{3}').",
                    "('{1}', '{2}', '{3}', '{4}').",
                    "('{1}', '{2}', '{3}', '{4}', '{5}').",
                    "('{1}', '{2}', '{3}', '{4}', '{5}', '{6}').",
                    "('{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}').",
                    "('{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}').",
                    "('{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', '{9}').",
                    "('{1}', '{2}', '{3}', '{4}', '{5}', '{6}', '{7}', '{8}', '{9}', '{10}')."),
            FORMAT(
                template,
                fragment1,
                fragment2,
                fragment3,
                fragment4,
                fragment5,
                fragment6,
                fragment7,
                fragment8,
                fragment9,
                fragment10))))

        



Help us optimize this function