I added this "showcase" example to the ats-lang homepage: http://www.ats-lang.org/
You can easily find and try it at the lower right corner of the page. On Tuesday, July 26, 2016 at 11:01:37 PM UTC-4, gmhwxi wrote: > > I modified the one-liner solution a bit as follows. > > The output of calling qsolve(1000000) can be seen at > > http://myflask-tutoriats.rhcloud.com/QueenPuzzle > > // > macdef sing = stream_make_sing > macdef intrange = list0_make_intrange > // > fun qsolve(nsol: Nat): void = > (((fix qsolve(n: int): stream(list0(int)) => if(n > 0)then((qsolve(n-1)* > intrange(0,N)).map(TYPE{list0(int)})(lam($tup(xs,x))=>cons0(x,xs))).filter > ()(lam(xs)=>let val-cons0(x0,xs) = xs in xs.iforall()(lam(i, x)=>((x0)!=x > )&&(abs(x0-x)!=i+1)) end)else(sing(nil0())))(N)).takeLte(nsol)).iforeach > ()(lam(i,xs)=>(gprintln!("Solution#", i+1, ":"); xs.rforeach()(lam(x) => > ((N).foreach()(lam(i)=>(gprint_string(ifval(i=x," Q", "."))));gprintln > !()));gprintln!())) > // > > > On Sunday, July 3, 2016 at 3:30:18 AM UTC-4, gmhwxi wrote: >> >> Here it is: >> >> ((fix f(n:int):stream_vt(list0(int))=>if(n > 0)then((f(n-1)*intrange(0,N >> )).filter()(lam(xsy)=>let val(xs,y)=xsy in $effmask_all(xs.iforall()(lam( >> i,x)=>(x != y && abs(x-y) != i+1)))end)).map()(lam(xs_y)=>let val (xs, y >> )=xs_y in cons0(y,xs) end)else(sing(nil0())))(N)).foreach()(lam(xs)=>((xs >> ).rforeach()(lam(x)=>((N).foreach()(lam(i)=>print_string(ifval(i=x," Q"," >> .")));println!()));println!())) >> >> I wrote it mainly for testing the support for overloading in ATS. >> >> Here is the source file: >> >> >> https://github.com/githwxi/ATS-Postiats/blob/master/doc/EXAMPLE/MISC/queens_comb.dats >> >> >> -- You received this message because you are subscribed to the Google Groups "ats-lang-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/ats-lang-users. To view this discussion on the web visit https://groups.google.com/d/msgid/ats-lang-users/64885e3b-dc0a-46d4-bbd4-381a6443344b%40googlegroups.com.
