packages feed

flite-0.1: examples/PermSort.hs

{

and False x = False;
and True x = x;

head (Cons x xs) = x;

map f Nil = Nil;
map f (Cons x xs) = Cons (f x) (map f xs);

append Nil ys = ys;
append (Cons x xs) ys = Cons x (append xs ys);

concatMap f Nil = Nil;
concatMap f (Cons x xs) = append (f x) (concatMap f xs);

filter p Nil = Nil;
filter p (Cons x xs) = case p x of {
                         True -> Cons x (filter p xs);
                         False -> filter p xs;
                       };

place x Nil = Cons (Cons x Nil) Nil;
place x (Cons y ys) = Cons (Cons x (Cons y ys)) (map (Cons y) (place x ys));

perm Nil = Cons Nil Nil;
perm (Cons x xs) = concatMap (place x) (perm xs);

ord Nil = True;
ord (Cons x Nil) = True;
ord (Cons x (Cons y ys)) = and ((<=) x y) (ord (Cons y ys));

permSort xs = head (filter ord (perm xs));

emitList Nil k = emit '\n' k;
emitList (Cons x xs) k = emitInt x (emit ' ' (emitList xs k));

main = emitList (permSort (Cons 9 (Cons 8 (Cons 7 (
                          (Cons 6 (Cons 5 (Cons 4 (
                          (Cons 3 (Cons 2 (Cons 1 Nil)))))))))))) 0;

}