Is there an example of how to use JVM libraries from ATS? I might try to rewrite the IntelliJ plugin in ATS if so, but I get the sense that getting ATS up to speed in JVM tooling might be a bit of a task (though perhaps a worthwhile one). Otherwise I can stick to Scala, which has the advantage I can write as quickly in it as I can in anything at the moment ;-).
On Saturday, July 16, 2016 at 9:37:15 PM UTC-4, gmhwxi wrote: > > > Ported some old code for testing atscc2cli: > > > https://github.com/githwxi/ATS-Postiats-contrib/tree/master/projects/SMALL/GameOf24/Clojure > > On Friday, July 15, 2016 at 10:59:26 AM UTC-4, gmhwxi wrote: >> >> For the record, here is the directory for Atscc2clj: >> >> >> https://github.com/githwxi/ATS-Postiats-contrib/tree/master/projects/MEDIUM/CATS-atsccomp/CATS-atscc2clj >> >> There is a Makefile for generating atscc2clj. Also, some of the running >> examples can be found at: >> >> >> https://github.com/githwxi/ATS-Postiats-contrib/tree/master/projects/MEDIUM/CATS-atsccomp/CATS-atscc2clj/TEST >> >> Clojure uses a rather peculiar way to support optimization of recursive >> tail-calls. So far, ATS can only properly handle tail-call >> optimization if the call is located not inside the body of a pattern >> matching clause. Hopefully, this restriction can be removed >> later... >> >> On Thursday, July 14, 2016 at 5:15:35 PM UTC-4, gmhwxi wrote: >>> >>> >>> I am pleased to announce that >>> ATS code can now be compiled to Clojure (and then to JVM). >>> >>> I include an example as follows. >>> >>> Obviously, the generated Clojure code is not so-called idiomatic Clojure >>> code. >>> But it is really a lot safer than manually written Clojure code because >>> the source >>> of the code passes type-checking in ATS. >>> >>> ;;fun >>> (defn >>> fact[arg0] >>> ( >>> with-local-vars >>> [ >>> ;;knd = 0 >>> tmpret0 nil >>> tmp1 nil >>> tmp2 nil >>> tmp3 nil >>> ;;var tmplab, tmplab_clj >>> ] ;; with-local-vars >>> ;; __patsflab_fact >>> (var-set tmp1 (ats2cljpre_gt_int0_int0 arg0 0)) >>> (if @tmp1 >>> (do >>> (var-set tmp3 (ats2cljpre_sub_int0_int0 arg0 1)) >>> (var-set tmp2 (fact @tmp3)) >>> (ats2cljpre_mul_int0_int0 arg0 @tmp2) >>> ) ;; if-then >>> (do >>> 1 >>> ) ;; if-else >>> ) >>> ) ;; end-of-with-local-vars >>> ) ;; end-of-fun >>> >>> Now I need to figure out how to write apps in Clojure :) After that, we >>> should be able to write apps in ATS (via Clojure). >>> >>> Cheers! >>> >>> -- 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 ats-lang-users+unsubscr...@googlegroups.com. To post to this group, send email to firstname.lastname@example.org. 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/bb307c2e-cbef-4fb6-a785-5f5c2057ff4c%40googlegroups.com.