procedure ( flatten ( numberList )
foreach ( mapcan element numberList
if ( listp ( element )
flatten ( copy ( element )) ;;then
ncons ( element ))
); if
); foreach
); procedure
x = '((1) ((2 (3) 4 ((5)) () 6) ((7 8 ()))) 9)
flatten(x) => (1 2 3 4 5 6 7 8 9)
x =>((1) ((2 (3) 4 ((5)) nil 6) ((7 8 nil))) 9)