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 []