Yes, kind of.

But the supposed selling point of compiling into ATS is that one is able
to take advantage of the advanced typechecking supported by ATS. Say,
you implement a DSL for programming cyptocurrencies; you may want to
compile the DSL into ATS so that you can statically verify certain
invariants
in, say, smart contracts.

On Sat, Mar 10, 2018 at 10:53 AM, Brandon Barker <brandon.bar...@gmail.com>
wrote:

> I don't know if TASTY <https://github.com/VladimirNik/tasty> might be of
> help, either in ideas or actual implementation. Some more indepth
> discussion of TAST: https://github.com/twitter/reasonable-scala/issues/21
>
>
>
> On Saturday, March 10, 2018 at 10:00:31 AM UTC-5, gmhwxi wrote:
>>
>> Thanks.
>>
>> These are all very good points.
>>
>> I said many times here that I see ATS as both a source language and
>> a target language. ATS3 will make it a lot easier for people to use it as
>> a
>> target language. I will first use a master design for the syntax of ATS3
>> largely based
>> on that of ATS2. And an interesting party can design his or her syntax
>> that translates
>> into this master design. Stay tuned :)
>>
>>
>> On Sat, Mar 10, 2018 at 9:11 AM, Brandon Barker <brandon...@gmail.com>
>> wrote:
>>
>>> While jumping back into ATS, a few other minor things (lots of minor
>>> things add up) that might be nicer is string interpolation in the form of
>>> python 3.6 or Scala (both are very similar). Here's a copy paste example
>>> from python 3.6:
>>>
>>> 1.
>>>
>>> name = "Spongebob Squarepants"print(f"Who lives in a Pineapple under the 
>>> sea? {name}.")
>>>
>>>
>>> Scala would look like:
>>>
>>> print(s"Who lives in a Pineapple under the sea? $name.")
>>>
>>>
>>> or if 'name' was a general scala expression instead of just an
>>> identifier:
>>>
>>> print(s"Who lives in a Pineapple under the sea? ${name}.")
>>>
>>>
>>> This could also be useful for supporting things like XML interpolation,
>>> etc, later on (not that it is a very high priority for most, I imagine ;-)).
>>>
>>> I don't know how this might work in ATS yet, since scala relies on
>>> objects' toString methods, and Python objects have something similar (in
>>> both languages, everything is effectively extends object, which I believe
>>> has the toString method - by default, this is just the object's address, so
>>> not too interesting, but Int of course has a sensible override, as do many
>>> objects).
>>>
>>>
>>> 2. OK, maybe this isn't so minor generally. I was using extern in front
>>> of a fun in a dats file (I thought this was actually required, but
>>> eventually realized that my sleep-deprived brain had read about extern last
>>> night and forgot this was only for interfaces, not definitions). This was
>>> the error message:
>>>  128(line=8, offs=38): error(parsing): [s0tring] is needed
>>> Lots of confusion here for a beginner. The user might have to figure out
>>> what s0tring is (I think it is either a non-dependent or non-linear string,
>>> can't recall and didn't check); also it implies something is needed when it
>>> is actually the absence of something that is needed in this particular case
>>> (the extern keyword).
>>>
>>> 3. Simplify ways of defining functions. There seem to be many: fn, fun,
>>> fnx. I'd prefer a longer but easier to remember 'tailrec' prefix keyword in
>>> some cases to make sure the function is tail recursive and tc-eliminated.
>>> Just throwing a quick idea out there, haven't thought about this much, and
>>> i'm sure that there are good reasons for why things are the way they are in
>>> ATS (I just don't recall all of them).
>>>
>>>
>>> I think if ATS3 is to be done, better error messages should be on about
>>> the same priority as improved syntax. On this point, I will say that Scala
>>> error messages seem way better generally than Python thanks to typing: you
>>> are generally looking at stacktraces in Python, which lack types as well
>>> ;-).
>>>
>>> On Saturday, March 10, 2018 at 7:33:04 AM UTC-5, Brandon Barker wrote:
>>>>
>>>> Implicit parameters get a bit of a bad reputation, but I don't recall
>>>> ever being burned by them in any way even though I use them almost all of
>>>> the time; if you have things like implicit strings or even implicit
>>>> Map[String, something], that is obviously not good programming style, since
>>>> it is relatively easy to add a new implicit in scope (but then you'd get a
>>>> compile error anyway as you can't have more than one implicit of the same
>>>> type in scope) - they usually need to be rather specific types related to
>>>> configuration to make sense.  Granted, I have not used them much in the
>>>> contradictory fashion that I linked above from Miles Sabin - that is a
>>>> rather unusual Scala style, but he hides a lot of that in his Shapeless
>>>> library so you can use the features without being directly exposed to (most
>>>> of) the unpleasantries.
>>>>
>>>> I get the sense that dotty isn't adding too many "bells and whistles"
>>>> features, and even removing the ones that relate to unsoundness, and making
>>>> other features less suprising, like making the extension order no longer
>>>> matter: A extends B with C will be the same as A extends C with B now. And
>>>> they are adding sensible union types. I believe they are improving
>>>> dependent typing in dotty as well. They are removing XML literals, which
>>>> I'm actually somewhat sad about, but adding in XML string interpolation.
>>>> I've heard there is 0 chance of getting linear types though. Which is why
>>>> ATS is really in a good place in terms of features. It has a lot of nice
>>>> functional things like Scala (even better: ATS has mutual TCO), has better
>>>> linear types than Rust, and has a proof system, neither of which Rust or
>>>> Scala has.
>>>>
>>>> I don't meant to overly sell Scala here; I just think it has some nice
>>>> things, and I've been using it a lot, so I wanted to list the things I
>>>> thought were nice. Why I use it: as I and some others like to say, it is a
>>>> language that gives you types like Java (but better) and concision like
>>>> python, while basically giving you the same massive and easy-to-use (once
>>>> you are used to it) JVM ecosystem that Java enjoys. So while it may not
>>>> have a lot of advanced features compared to some more modern languages, it
>>>> already seems to be quite an improvement over the most popular languages
>>>> for many applications. Also I had a lot of JVM-related projects lately ;-).
>>>>
>>>> On Sat, Mar 10, 2018 at 7:09 AM, gmhwxi <gmh...@gmail.com> wrote:
>>>>
>>>>>
>>>>> The way in which Scala evolves reminds me of C++: Powerful features
>>>>> increase productivity but also make it harder and harder to reason
>>>>> about
>>>>> code.
>>>>>
>>>>>
>>>>> On Friday, March 9, 2018 at 3:29:18 PM UTC-5, Brandon Barker wrote:
>>>>>>
>>>>>> Another Scala feature worth looking into: implicit parameters,
>>>>>> values, and function types. Dotty has added implicit function types, and
>>>>>> I'm not very familiar with all their benefits as yet:
>>>>>> https://www.scala-lang.org/blog/2016/12/07/implicit-fun
>>>>>> ction-types.html
>>>>>> However, implicit parameters alone have been great for me, and could
>>>>>> probably go a long way towards reducing some verbosity in ATS. They can
>>>>>> also be used in clever ways to create contradictions at compile time, by
>>>>>> bringing into scope two implicit values of the same type. I'm not sure if
>>>>>> ATS would benefit from that feature, but Scala's type system doesn't 
>>>>>> allow
>>>>>> for things like type b = not a. You can achieve that with implicits:
>>>>>> https://gist.github.com/milessabin/c9f8befa932d98dcc7a4
>>>>>>
>>>>>> On Wednesday, March 7, 2018 at 12:01:03 PM UTC-5, Brandon Barker
>>>>>> wrote:
>>>>>>>
>>>>>>> I forgot to mention, I like the idea of adding a level of
>>>>>>> indirection in the syntax for ATS3. Hopefully this could allow something
>>>>>>> like scalafix <https://github.com/scalacenter/scalafix> to be
>>>>>>> developed, which would not only allow code migration from ATS2 to ATS3, 
>>>>>>> but
>>>>>>> also ease future code migration within ATS3.
>>>>>>> to be applied to existing sources
>>>>>>>
>>>>>>> On Wednesday, March 7, 2018 at 11:52:49 AM UTC-5, Brandon Barker
>>>>>>> wrote:
>>>>>>>>
>>>>>>>> Glad to see this thread is here. I will just share some general
>>>>>>>> thoughts for syntax as my ATS is a bit rusty:
>>>>>>>>
>>>>>>>> 1. I like Scala style syntax - I think it is easy enough to read,
>>>>>>>> unless maybe you are doing stuff at the type level, where ATS seems to 
>>>>>>>> have
>>>>>>>> an advantage over Scala. I think Scala is similar to python in a lot of
>>>>>>>> ways (especially with Python 3.6 typing styles), aside from making
>>>>>>>> indentation part of the syntax. My thought is that Python doing this 
>>>>>>>> helps
>>>>>>>> to force people to write somewhat readable code (think beginner Python 
>>>>>>>> vs
>>>>>>>> beginner Perl), but I think we can assume that if you are coding in 
>>>>>>>> ATS, or
>>>>>>>> at least publishing code in ATS, you will be sensible enough to have 
>>>>>>>> some
>>>>>>>> kind of good programming style. So I would vote for leaving 
>>>>>>>> indentation to
>>>>>>>> a style checker/linter.
>>>>>>>> 2. Concision: I sadly don't know Idris or Haskell, and am very
>>>>>>>> tempted to learn one of them to get a better appreciation of them, but 
>>>>>>>> I'd
>>>>>>>> rather focus on ATS again. However, I do appreciate that they are 
>>>>>>>> concise,
>>>>>>>> even more so than Scala, which is generally laudable.
>>>>>>>> 3. Feature hiding: Facilitate the principle of least powe
>>>>>>>> <http://www.lihaoyi.com/post/StrategicScalaStylePrincipleofLeastPower.html>r.
>>>>>>>> ATS has a lot of advanced features, as does Scala (of course ATS has 
>>>>>>>> more).
>>>>>>>> Scala is pretty good at letting you hide them. I swear, I'd been 
>>>>>>>> coding in
>>>>>>>> Scala for 3 years and was still amazed at how simple you could make the
>>>>>>>> code if you try - just take a look at http://www.kogics.net/kojo -
>>>>>>>> it is nearly as easy as python I would say, and preferable to me. The 
>>>>>>>> lack
>>>>>>>> of types in the coding examples is almost annoying to me, but I 
>>>>>>>> understand
>>>>>>>> it is beneficial to young readers. Now, I'm not saying we can do all 
>>>>>>>> this
>>>>>>>> in ATS, but Scala is so named because it is a "language that scales 
>>>>>>>> with
>>>>>>>> you", and I believe ATS is this too, but it would be good to make that
>>>>>>>> scaling a bit more smooth, like climbing a Olympus Mons
>>>>>>>> <https://en.wikipedia.org/wiki/Olympus_Mons#/media/File:Olympus_Mons_Side_View.svg>
>>>>>>>> rather than K2.
>>>>>>>>
>>>>>>>>
>>>>>>>> Other goals:
>>>>>>>>  - Build systems: I think cross builds are very important as
>>>>>>>> already stated. In scala land, there is Scala (JVM), scala.js, and now
>>>>>>>> scala-native. Usually, we can create cross builds by having some source
>>>>>>>> that is platform independent (e.g. APIs/interfaces/types) and other 
>>>>>>>> bits
>>>>>>>> that are platform specific and rely on the platform independent bits. 
>>>>>>>> This
>>>>>>>> is great. Related to this, I actually think it may be worthwhile 
>>>>>>>> looking
>>>>>>>> into an existing build tool with a larger community rather than using 
>>>>>>>> make
>>>>>>>> and autotools, which seem to me a bit antiquated and unfriendly to 
>>>>>>>> other
>>>>>>>> platforms. I recall Hongwei and I were both a bit jaded by our 
>>>>>>>> experience
>>>>>>>> with using gradle, so I'm both excited to say Mill
>>>>>>>> <https://github.com/lihaoyi/mill> looks like a promising
>>>>>>>> alternative, though I'm also hesitant to make a suggestion after the 
>>>>>>>> last
>>>>>>>> failure with Gradle :-) But I believe a lot in Mill's stated goals,
>>>>>>>> especially insofar as they overlap with CBT's
>>>>>>>> <https://github.com/cvogt/cbt> and the idea of being designed to
>>>>>>>> support multiple languages. If we can agree that Scala isn't terrible, 
>>>>>>>> I
>>>>>>>> say let's not reinvent the wheel, and try to comingle a bit with them. 
>>>>>>>> This
>>>>>>>> could be beneficial for both communities. Let's think about using their
>>>>>>>> build tools. At the moment, Mill seems to be creating a lot of 
>>>>>>>> excitement,
>>>>>>>> so it might be worth looking into it first.
>>>>>>>>
>>>>>>>> I'll try to give more concrete feedback in the future.
>>>>>>>>
>>>>>>>> On Friday, February 9, 2018 at 1:15:22 PM UTC-5, gmhwxi wrote:
>>>>>>>>>
>>>>>>>>> For the moment, I just want to open a thread for ATS3.
>>>>>>>>>
>>>>>>>>> I decided to pick ATS/Xanadu for the full project name. I like the
>>>>>>>>> name Xanadu
>>>>>>>>> because it is poetic and brings a feel of exoticness.
>>>>>>>>>
>>>>>>>>> ATS3 is supposed to be compiled to ATS2. At least at the
>>>>>>>>> beginning. I will try to
>>>>>>>>> write more about what I have in mind regarding ATS3.
>>>>>>>>>
>>>>>>>>> I know that a lot of people have been complaining about the syntax
>>>>>>>>> of ATS2. So
>>>>>>>>> we can start the effort of designing some "nice" syntax for ATS3.
>>>>>>>>> Please feel free
>>>>>>>>> to post here if you would like share your opinions and ideas.
>>>>>>>>>
>>>>>>>>> I will be happy to take the lead but we definitely need to have
>>>>>>>>> some form of community
>>>>>>>>> effort on this project given its size and scope.
>>>>>>>>>
>>>>>>>>> Cheers!
>>>>>>>>>
>>>>>>>>> --Hongwei
>>>>>>>>>
>>>>>>>>> PS: I felt rushed every time up to now when implementing ATS. This
>>>>>>>>> time I am hoping
>>>>>>>>> to have the luxury of thinking about implementation a bit before
>>>>>>>>> actually doing it :)
>>>>>>>>>
>>>>>>>>> --
>>>>> You received this message because you are subscribed to a topic in the
>>>>> Google Groups "ats-lang-users" group.
>>>>> To unsubscribe from this topic, visit https://groups.google.com/d/to
>>>>> pic/ats-lang-users/mjS9NtQz6Pg/unsubscribe.
>>>>> To unsubscribe from this group and all its topics, send an email to
>>>>> ats-lang-user...@googlegroups.com.
>>>>> To post to this group, send email to ats-lan...@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/0609092d-2e
>>>>> a6-481b-bf90-7b7bfb1ca52a%40googlegroups.com
>>>>> <https://groups.google.com/d/msgid/ats-lang-users/0609092d-2ea6-481b-bf90-7b7bfb1ca52a%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Brandon Barker
>>>> brandon...@gmail.com
>>>>
>>> --
>>> 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-user...@googlegroups.com.
>>> To post to this group, send email to ats-lan...@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/ms
>>> gid/ats-lang-users/a8e4b46b-41d5-4e19-b7eb-a528e499ea68%40go
>>> oglegroups.com
>>> <https://groups.google.com/d/msgid/ats-lang-users/a8e4b46b-41d5-4e19-b7eb-a528e499ea68%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>
>> --
> 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/a0455949-81d5-4743-9646-69fd4fc2642a%
> 40googlegroups.com
> <https://groups.google.com/d/msgid/ats-lang-users/a0455949-81d5-4743-9646-69fd4fc2642a%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>

-- 
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/CAPPSPLqp2Y_vHrcALUdhXho3JV9EEHZTfBjzhJ1dGcTZa6XD1g%40mail.gmail.com.

Reply via email to