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 ats-lang-users@googlegroups.com.
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.

Reply via email to