I'm actually not a huge fan of Scala syntax, simply because I find it 
verbose and I believe that it is not suited to functional programming in 
general. If there are reasons to support methods and whatnot, then I would 
be more amenable to it.

As for build systems, I think that shake 
<http://hackage.haskell.org/package/shake> is probably good to have. I've 
learned a lot of lessons from language-ats, and I believe I could write a 
language-xanadu package that worked and stayed up-to-date with the actual 
compiler. This would (among other things) make builds much, much simpler. I 
am against any use Scala on technical grounds, and shake is much better 
established, having led to several published papers. I actually kind of 
like the versatility and portability of make/configure, but I should be 
able to maintain a shake-xanadu package as well to provide an 
alternate/simpler solution. 

I'm also not really sure how string interpolation works in Scala. I know 
Rust does something at the macro level, so that may be an option - it would 
allow errors to be generated at compile-time.

On the ATS front: I am curious as to how ATS optimizes tail recursion. I 
know Scala doesn't actually optimize tail recursion (unless the values are 
of the same type) which is immensely limiting in practice. A lot of 
interesting stuff (e.g. monadic recursion) relies on such optimizations in 
practice. 

Cheers
Vanessa M.

On Wednesday, March 7, 2018 at 10:52:49 AM UTC-6, 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/876a2928-ab2c-4e50-814f-6f85696fb7f5%40googlegroups.com.

Reply via email to