declare fun {Queens N} fun {MakeList N} if N==0 then nil else _|{MakeList N-1} end end proc {PlaceQueens N ?Cs ?Us ?Ds} if N>0 then Ds2 Us2=_|Us in Ds=_|Ds2 {PlaceQueens N-1 Cs Us2 Ds2} {PlaceQueen N Cs Us Ds} else skip end end proc {PlaceQueen N ?Cs ?Us ?Ds} choice Cs=N|_ Us=N|_ Ds=N|_ [] _|Cs2=Cs _|Us2=Us _|Ds2=Ds in {PlaceQueen N Cs2 Us2 Ds2} end end Qs={MakeList N} in {PlaceQueens N Qs _ _} Qs end