
Nel codice seguente mancano ovviamente i commenti.




insertItaux el [] prec lsaux = appendIt (reverseIt lsaux) [el]

insertItaux el (x:xs) prec lsaux = if (prec el x) 
                                    then appendIt (reverseIt lsaux) (el:(x:xs))
                                    else (insertItaux el xs prec (x:lsaux))


insertIt el xs prec = insertItaux el xs prec []





insertionsortItaux [] prec lsaux = lsaux

insertionsortItaux (x:xs) prec lsaux = insertionsortItaux xs prec (insertIt x lsaux prec)


insertionsortIt xs prec = insertionsortItaux xs prec []





reverseIterAux [] as = as
reverseIterAux (x:xs) as = reverseIterAux xs (x:as)

reverseIt xs = reverseIterAux xs []


appendIterAux [] [] as = reverseIt as
appendIterAux [] ys as = appendIterAux ys [] as
appendIterAux (x:xs) ys as = appendIterAux xs ys (x:as)

appendIt xs ys = appendIterAux xs ys []

