[project @ 2001-08-22 11:45:06 by sewardj]
[ghc-hetmet.git] / ghc / tests / programs / 10queens / Main.hs
1 module Main (main) -- q
2 where {
3 --import Fast2haskell;
4
5     f_queens a_n=f_queens' (enumFromTo (1 :: Int) a_n) a_n;
6     f_queens' a_positions 0=(:) [] [];
7     f_queens' a_positions a_n=c_concat (f_map (f_place (f_queens' a_positions (((-) :: (Int -> Int -> Int)) a_n (1 :: Int)))) a_positions);
8     f_place a_boards a_q=[(:) a_q a_bs|a_bs<-a_boards,f_safe (1 :: Int) a_q a_bs];
9     f_safe a_d a_q []=True;
10     f_safe a_d a_q (a_h:a_t)=
11         if (((==) :: (Int -> Int -> Bool)) a_q a_h)
12         then False
13         else 
14         if (((==) :: (Int -> Int -> Bool)) (f_absi (((-) :: (Int -> Int -> Int)) a_q a_h)) a_d)
15         then False
16         else 
17             (f_safe (((+) :: (Int -> Int -> Int)) a_d (1 :: Int)) a_q a_t);
18     f_absi a_n=
19         if (((<) :: (Int -> Int -> Bool)) a_n (0 :: Int))
20         then (((negate) :: (Int -> Int)) a_n)
21         else 
22             a_n;
23     f_main a_n=(++) (show (length (f_queens a_n))) "\n";
24     c_input=(10 :: Int);
25     c_concat=f_foldr (++) [];
26     f_foldr a_op a_r []=a_r;
27     f_foldr a_op a_r (a_a:a_x)=a_op a_a (f_foldr a_op a_r a_x);
28     f_map a_f a_x=[a_f a_a|a_a<-a_x];
29     main = putStr (f_main c_input)
30 }