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-function-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 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/0609092d-2ea6-481b-bf90-7b7bfb1ca52a%40googlegroups.com.

Reply via email to