main = Queens.Start Queens.Start = Queens.nsoln 11 Queens.nsoln !nq_0 = Queens.len (Queens.gen nq_0 nq_0) Queens.gen nq_0 !n_1 = if (eq n_1 0) (Flite.Cons Flite.Nil Flite.Nil) (Queens.concatMap (Queens.gen1 nq_0) (Queens.gen nq_0 (sub n_1 1))) Queens.gen1 !nq_0 !b_1 = Queens.concatMap (Queens.gen2 b_1) (Queens.toOne nq_0) Queens.toOne !n_0 = if (eq n_0 1) (Flite.Cons 1 Flite.Nil) (Flite.Cons n_0 (Queens.toOne (sub n_0 1))) :: Flite.List = Flite.Nil | Flite.Cons a1 a2 Queens.gen2 !b_0 q_1 = if (Queens.safe q_1 1 b_0) (Flite.Cons (Flite.Cons q_1 b_0) Flite.Nil) Flite.Nil Queens.safe x_0 d_1 !_x_2 = select _x_2 (Flite.Nil -> True) (Flite.Cons q_1_0 l_1_1 -> Queens.and (<{Queens./=_19}> x_0 q_1_0) (Queens.and (<{Queens./=_21}> x_0 (add q_1_0 d_1)) (Queens.and (<{Queens./=_23}> x_0 (sub q_1_0 d_1)) (Queens.safe x_0 (add d_1 1) l_1_1)))) <{Queens./=_23}> !a_0 !b_1 = <{Queens.<>_24}> a_0 b_1 <{Queens.<>_24}> !x_0 !y_1 = not (eq x_0 y_1) Queens.and !_x_0 a_1 = if _x_0 a_1 False <{Queens./=_21}> !a_0 !b_1 = <{Queens.<>_22}> a_0 b_1 <{Queens.<>_22}> !x_0 !y_1 = not (eq x_0 y_1) <{Queens./=_19}> !a_0 !b_1 = <{Queens.<>_20}> a_0 b_1 <{Queens.<>_20}> !x_0 !y_1 = not (eq x_0 y_1) Queens.concatMap f_0 !_x_1 = select _x_1 (Flite.Nil -> Flite.Nil) (Flite.Cons x_1_0 xs_1_1 -> Queens.append (f_0 x_1_0) (Queens.concatMap f_0 xs_1_1)) Queens.append !_x_0 ys_1 = select _x_0 (Flite.Nil -> ys_1) (Flite.Cons x_1_0 xs_1_1 -> Flite.Cons x_1_0 (Queens.append xs_1_1 ys_1)) Queens.len !_x_0 = select _x_0 (Flite.Nil -> 0) (Flite.Cons x_1_0 xs_1_1 -> add 1 (Queens.len xs_1_1))