Re: Intro to ATS - How to code productively

2018-04-01 Thread Steinway Wu
Hi Artyom, 

This is awesome :)

I have a question about "gradual improvement" of performance. I personally 
feels it is more about gradual improvement of specification, e.g. change a 
simple data type into a more refined type, to catch more bugs. So the sales 
pitch is more like "write dirty code that works first, and then sit down 
and formally specify what the code should do", at least to me. What do you 
think? 

Also I would like to point out abstract types. It's a great way to work out 
a system in a top-down fashion. We craft some abstract types, then provide 
a set of functions that works on values of these types (like a DSL), and 
program using these functions. We can quickly prototype the idea using the 
type checker, and defer the implementation details to a later point. C can 
probably do this via pointers or structs, but then you need to think about 
the details of a struct. 

On Saturday, March 31, 2018 at 7:49:39 AM UTC-4, Artyom Shalkhakov wrote:
>
> Hi Lance,
>
> I've put this 
>  
> together.
>
> What do you think? And the rest of the group? This is mostly aimed at C 
> programmers.
>
> On Thursday, March 29, 2018 at 1:48:45 AM UTC+6, Lance Galletti wrote:
>>
>> Awesome thank you! Looking forward to it! :)
>>
>> On Wednesday, March 28, 2018 at 12:00:14 PM UTC-4, Artyom Shalkhakov 
>> wrote:
>>>
>>> On Wednesday, March 28, 2018 at 9:34:37 PM UTC+6, Lance Galletti wrote:

 Hi Artyom!

 Thank you for your feedback! It is great to hear an advanced 
 programmer's perspective on the appeal of ATS. If you have the time it 
 would be great to incorporate into the write-up a section about this! :)


>>> I wouldn't call myself an advanced programmer, but I've been interested 
>>> in ATS programming for a lot of time, that's true.
>>>
>>> I'll write a sales-pitch. It's really exciting stuff (to me, at least!).
>>>  
>>>
 So far I have been just putting together what I have learned from 
 Hongwei's classes and books but I will definitely be checking out HtDP - 
 thank you for the suggestion!
  

>>>
 On Wednesday, March 28, 2018 at 3:13:37 AM UTC-4, Artyom Shalkhakov 
 wrote:
>
> Hi Lance,
>
> On Tuesday, March 27, 2018 at 9:40:55 PM UTC+6, Lance Galletti wrote:
>>
>> Hi ats users!
>>
>> I recently had the opportunity to give a talk at a hackathon about 
>> ATS and coding productivity / quality. I thought I would share my slides 
>> here:
>>
>>
>> https://docs.google.com/presentation/d/157VR0oQNTfUiiChYdbv77PYZkYKo_zkZfwRiqGv6sEY/edit?usp=sharing
>>
>> And the informal write up I am currently developing:
>>
>> https://github.com/galletti94/magnificATS/tree/master/INTRO
>>
>> If, like me, you are passionate about coding quality, methodology, 
>> productivity, or functional programming and, of course ATS, please reach 
>> out!
>>
>>
> First off, I chuckled when I saw the name of the repo. :-)
>
> I want to write something about the C-style programming for ATS, but 
> not quite have the time (or the guts or whatever it is I lack). It would 
> be 
> great to help fellow programmers learn more about ATS!
>  
>
>> I would be happy to collaborate on the write up and hear your 
>> thoughts about what drew YOU to ATS.
>>
>
> I still view ATS as C-with-proper-type-system. :) This is what drew  
> me to ATS: you can write safe, efficient systems-level programs but this 
> will require some theorem proving, bringing this academic discipline 
> close 
> to actual programming practice (or you can cast your way through the 
> types, 
> but then you're the one to blame if things go wrong). ATS helped me to 
> improve my knowledge of C.
>
> Regarding your write-up, have you seen HtDP (How to Design Programs)? 
> Their "design recipes" are somewhat similar IIRC (proceed top-down, 
> refine, 
> state pre- and post-conditions, provide examples of evaluation aka tests).
>
> Looking forward to connecting!
>>
>> Lance Galletti
>> gall...@bu.edu
>>
>>
>>

-- 
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/5da7c3c7-6090-4cb6-932d-8dfcdb66909b%40googlegroups.com.


Re: Flat memory underlying dataviewtypes

2018-04-01 Thread Andrew Knapp
I'll put it on github sometime this week. It's an ATS port of this c++ 
library

https://github.com/rigtorp/nanomq

-- 
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/73f0ab46-9e7b-4d16-984a-c9a603ee8972%40googlegroups.com.


Re: Intro to ATS - How to code productively

2018-04-01 Thread Artyom Shalkhakov

Hi Steinway,

On Sunday, April 1, 2018 at 11:39:34 PM UTC+6, Steinway Wu wrote:
>
> Hi Artyom, 
>
> This is awesome :)
>
> Thanks!
 

> I have a question about "gradual improvement" of performance. I personally 
> feels it is more about gradual improvement of specification, e.g. change a 
> simple data type into a more refined type, to catch more bugs. So the sales 
> pitch is more like "write dirty code that works first, and then sit down 
> and formally specify what the code should do", at least to me. What do you 
> think? 
>
>
Well, I guess the two views are complementary! I was actually thinking 
about non-linear data type to linear data type to be a refinement -- is 
this not  considered the usual meaning? I wasn't actually thinking of 
"refinement" in a technical sense.

I changed the phrasing somewhat:


>- gradual improvement: no need to put a lot of effort upfront, write 
>dirty code that works, and then sit down and improve efficiency and 
>correctness (either or both, you have the tools!)
>
> Is this any better?

Also I would like to point out abstract types. It's a great way to work out 
> a system in a top-down fashion. We craft some abstract types, then provide 
> a set of functions that works on values of these types (like a DSL), and 
> program using these functions. We can quickly prototype the idea using the 
> type checker, and defer the implementation details to a later point. C can 
> probably do this via pointers or structs, but then you need to think about 
> the details of a struct. 
>
>
Indeed! This is certainly the way to go.
 

> On Saturday, March 31, 2018 at 7:49:39 AM UTC-4, Artyom Shalkhakov wrote:
>>
>> Hi Lance,
>>
>> I've put this 
>>  
>> together.
>>
>> What do you think? And the rest of the group? This is mostly aimed at C 
>> programmers.
>>
>> On Thursday, March 29, 2018 at 1:48:45 AM UTC+6, Lance Galletti wrote:
>>>
>>> Awesome thank you! Looking forward to it! :)
>>>
>>> On Wednesday, March 28, 2018 at 12:00:14 PM UTC-4, Artyom Shalkhakov 
>>> wrote:

 On Wednesday, March 28, 2018 at 9:34:37 PM UTC+6, Lance Galletti wrote:
>
> Hi Artyom!
>
> Thank you for your feedback! It is great to hear an advanced 
> programmer's perspective on the appeal of ATS. If you have the time it 
> would be great to incorporate into the write-up a section about this! :)
>
>
 I wouldn't call myself an advanced programmer, but I've been interested 
 in ATS programming for a lot of time, that's true.

 I'll write a sales-pitch. It's really exciting stuff (to me, at least!).
  

> So far I have been just putting together what I have learned from 
> Hongwei's classes and books but I will definitely be checking out HtDP - 
> thank you for the suggestion!
>  
>

> On Wednesday, March 28, 2018 at 3:13:37 AM UTC-4, Artyom Shalkhakov 
> wrote:
>>
>> Hi Lance,
>>
>> On Tuesday, March 27, 2018 at 9:40:55 PM UTC+6, Lance Galletti wrote:
>>>
>>> Hi ats users!
>>>
>>> I recently had the opportunity to give a talk at a hackathon about 
>>> ATS and coding productivity / quality. I thought I would share my 
>>> slides 
>>> here:
>>>
>>>
>>> https://docs.google.com/presentation/d/157VR0oQNTfUiiChYdbv77PYZkYKo_zkZfwRiqGv6sEY/edit?usp=sharing
>>>
>>> And the informal write up I am currently developing:
>>>
>>> https://github.com/galletti94/magnificATS/tree/master/INTRO
>>>
>>> If, like me, you are passionate about coding quality, methodology, 
>>> productivity, or functional programming and, of course ATS, please 
>>> reach 
>>> out!
>>>
>>>
>> First off, I chuckled when I saw the name of the repo. :-)
>>
>> I want to write something about the C-style programming for ATS, but 
>> not quite have the time (or the guts or whatever it is I lack). It would 
>> be 
>> great to help fellow programmers learn more about ATS!
>>  
>>
>>> I would be happy to collaborate on the write up and hear your 
>>> thoughts about what drew YOU to ATS.
>>>
>>
>> I still view ATS as C-with-proper-type-system. :) This is what drew  
>> me to ATS: you can write safe, efficient systems-level programs but this 
>> will require some theorem proving, bringing this academic discipline 
>> close 
>> to actual programming practice (or you can cast your way through the 
>> types, 
>> but then you're the one to blame if things go wrong). ATS helped me to 
>> improve my knowledge of C.
>>
>> Regarding your write-up, have you seen HtDP (How to Design Programs)? 
>> Their "design recipes" are somewhat similar IIRC (proceed top-down, 
>> refine, 
>> state pre- and post-conditions, provide examples of evaluation aka 
>> tests).
>>
>> Looking forward to connecting