
parameter (list int);
return (list int);
storage unit;
code { CAR;                     # Access list
       # Insert procedure
       LAMBDA (pair int (list int))
              (list int)
              { DUP; CDR; DIP{CAR}; # Unpack accumulator and existing list
                DIIP{NIL int}; PUSH bool True; # Setup loop
                LOOP { IF_CONS { SWAP;
                                 DIP{DUP; DIIP{DUP}; DIP{CMPLT}; SWAP}; # Duplicate numbers
                                 SWAP;
                                 # If less than
                                 IF { DIP{SWAP; DIP{CONS}}; PUSH bool True}
                                    # Otherwise
                                    { SWAP; CONS; PUSH bool False}}
                               # Ending case
                               { NIL int; PUSH bool False}};
                SWAP; CONS; SWAP; # Finish lists
                LAMBDA (pair int (list int))
                       (list int)
                       {DUP; CAR; DIP{CDR}; CONS};
                REDUCE};
       NIL int; SWAP; DIP{SWAP}; # Accumulator for reverse onto
       REDUCE;                  # Execute reverse onto
       UNIT; SWAP; PAIR}        # Calling convention
