main = Queens2.Start Queens2.Start = Queens2.nqueens 11 Queens2.nqueens !n_0 = Queens2.len (Queens2.solve n_0 (Queens2.replicate n_0 Flite.Nil)) :: Flite.List = Flite.Nil | Flite.Cons a1 a2 Queens2.replicate !n_0 x_1 = if (eq n_0 0) Flite.Nil (Flite.Cons x_1 (Queens2.replicate (sub n_0 1) x_1)) Queens2.solve !n_0 mask_1 = if (eq n_0 0) (Flite.Cons Flite.Nil Flite.Nil) (Queens2.concatMap (Queens2.sol (sub n_0 1)) (Queens2.fill mask_1)) Queens2.fill !_x_0 = select _x_0 (Flite.Nil -> Flite.Nil) (Flite.Cons x_1_0 xs_1_1 -> Queens2.append (Queens2.lrd x_1_0 xs_1_1) (Queens2.map (Flite.Cons x_1_0) (Queens2.fill xs_1_1))) Queens2.map f_0 !_x_1 = select _x_1 (Flite.Nil -> Flite.Nil) (Flite.Cons x_1_0 xs_1_1 -> Flite.Cons (f_0 x_1_0) (Queens2.map f_0 xs_1_1)) Queens2.lrd !_x_0 ys_1 = select _x_0 (Flite.Nil -> Flite.Cons (Flite.Cons (Flite.Cons Queens2.l (Flite.Cons Queens2.r (Flite.Cons Queens2.d Flite.Nil))) ys_1) Flite.Nil) (Flite.Cons x_1_0 xs_1_1 -> Flite.Nil) Queens2.d = 2 Queens2.r = 1 Queens2.l = 0 Queens2.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 (Queens2.append xs_1_1 ys_1)) Queens2.sol !n_0 row_1 = Queens2.map (Flite.Cons row_1) (Queens2.solve n_0 (Queens2.next row_1)) Queens2.next !mask_0 = Queens2.merge (Queens2.merge (Queens2.down mask_0) (Queens2.left mask_0)) (Queens2.right mask_0) Queens2.right xs_0 = Flite.Cons Flite.Nil (Queens2.map (Queens2.onep (Queens2.eq_22 Queens2.r)) xs_0) Queens2.eq_22 !x_0 !y_1 = eq x_0 y_1 Queens2.onep p_0 !_x_1 = select _x_1 (Flite.Nil -> Flite.Nil) (Flite.Cons x_1_0 xs_1_1 -> if (p_0 x_1_0) (Flite.Cons x_1_0 Flite.Nil) (Queens2.onep p_0 xs_1_1)) Queens2.left !xs_0 = Queens2.map (Queens2.onep (Queens2.eq_22 Queens2.l)) (Queens2.tail xs_0) Queens2.tail !_x_0 = select _x_0 (Flite.Cons x_1_0 xs_1_1 -> xs_1_1) Queens2.down !xs_0 = Queens2.map (Queens2.onep (Queens2.eq_22 Queens2.d)) xs_0 Queens2.merge !_x_0 ys_1 = select _x_0 (Flite.Nil -> Flite.Nil) (Flite.Cons x_1_0 xs_1_1 -> select ys_1 (Flite.Nil -> Flite.Cons x_1_0 xs_1_1) (Flite.Cons y_2_0 ys_2_1 -> Flite.Cons (Queens2.append x_1_0 y_2_0) (Queens2.merge xs_1_1 ys_2_1)) ) Queens2.concatMap f_0 !_x_1 = select _x_1 (Flite.Nil -> Flite.Nil) (Flite.Cons x_1_0 xs_1_1 -> Queens2.append (f_0 x_1_0) (Queens2.concatMap f_0 xs_1_1)) Queens2.len !_x_0 = select _x_0 (Flite.Nil -> 0) (Flite.Cons x_1_0 xs_1_1 -> add 1 (Queens2.len xs_1_1))