I've been learning ATS for about a month, mostly in the hours of midnight to 2AM, so it's been slow going. But, I can see this a genuinely worthwhile language that has both very interesting ideas and nuch practical value.
I used to learn programming languages obsessively, and I quit that a long time ago as a bad habit and (in retrospect) mostly wasted effort. But, I do have that experience, of reading lots of tutorials and using different kinds of documentation and participating in communities that varied a lot in their resources, to learn these languages. So, on topic with the thread, your work for ATS really comes across, in your websites and your writing and your participating in various communities. And you do a good job of presenting the language as *worth* someone trying to use. On the topic of making ATS easier to learn and use (maybe that's part of the idea of ATS3?), I think the language as it is can be made much more accessible with just documentation efforts. Consider Mercury's docs: http://mercurylang.org/documentation/documentation.html The Mercury tutorial is not very good, mainly in how little of the language it covers (imagine that the only ATS tutorial never even mentions linear types)--but there is also: * the Mercury Language Reference Manual, which describes all of the features of the language in detail -- its syntax, all of the kinds of types it supports, how the language fundamentally works, etc. * the Mercury User's Guide, which describes the tools provided with the language in detail. All of the compiler's flags, how to use the debugger, how to use their build system shortcuts (tools that you can use in lieu of writing a Makefile or more, to get started). * the Mercury Library Reference Manual, which describes all of the libraries provided with Mercury, in detail. All the functions that you can use with arrays, lists, strings. All of the I/O functions. With examples, usage, type information. At present ATS is missing a User's Guide (not a big deal) and a Library Reference Manual (this would make a lot of code that shipped with ATS easier to employ and would double as a source of on-point examples that would help people understand the language features exhibited by the code or required for its use) . Currently, for a language reference I mostly load the onechunk.html version of Introduction to Programming in ATS and hit ctrl-F and hope what I'm confused about has some examples that I can understand. For library reference I have what I see used in examples and what then I do a lot of 'grep -r strptr /usr/local/lib/ats*' And then, ATS has some features that no other language has--or has in a similar-enough manner to be useful--so it would benefit from some very narrowly focused tutorials. Introduction to Programming in ATS is good overall, and good for most of the language, but, consider: the Theorem-Proving in ATS/LF section begins with a dataprop example. This is very cool, but in order to apply that example I would have to know a lot more about ATS proofs than I could know at that point. The next series of examples all accept proof variables or return them. Later in section IV there is this example: fn fact{n:nat} (n: int (n)): int = let fun loop{n:nat}{l:addr} .<n>. (pf: !int @ l | n: int n, res: ptr l): void = if n > 0 then let val () = !res := n * !res in loop (pf | n-1, res) end // end of [if] // end of [loop] var res: int with pf = 1 val () = loop (pf | n, addr@res) // addr@res: the pointer to res in res end // end of [fact] A factorial function, the 'hello world' of functional programming. I know how that works. And this code functions by reassigning a memory location allocated on the stack. I understand that too. And pf, that is... synthesized from the var definition, and then passed around to show that it's OK for the other code to write to that location. Awesome! I felt like I'd finally reached a breakthrough in understanding theorem-proving in ATS with this. A proof variable is created, used, and then discarded in this short example. On Thursday, February 8, 2018 at 9:25:37 PM UTC-6, gmhwxi wrote: > > This is a bit unusal :) > > Thanks for all the compliments. Maybe it is time to think about ATS3? > > 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 [email protected]. To post to this group, send email to [email protected]. 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/4b43a50b-f92f-47af-808d-c0808db0d69f%40googlegroups.com.
