Being a newbie with ATS, I am finding the following:
- The books are good, but not searchable and would love a pdf, really really
- The books would benefit from extension if the goal is to grow the user base and let people self serve wrt learning
- Overloading is very confusing for a learner, as it makes it hard to read aloud
- Kinds are confusing, I would love a chapter int he book to walk through some numeric type from A-Z to make all these definitions more clear
- Error messages from C compiler are harder to deal with than the ATS compiler
- Lack of transparency of what happens in C is a bit scary when it comes to potential promotions and casting
But:
- My embedded code does not have pointer bugs or overrun any size boundaries, which is a big deal when it happens
- My embedded code runs almost as fast as a previous C version, probably just excepting any copying from casting that I don't yet understand if and when it happens
- Dependent types has saved me from a bug at least twice so far and makes intent very clear and I think a maintainer is less likely to break my code
- It allows me to think functionally with embedded code, very very nice, and let's me sleep well
- The FFI is so easy without a bunch of marshaling code, big big win for me
- Ability to get help getting over initial mistakes and misunderstands is golden
Overall, my commercial embedded work is a success. It will be interesting to see how code reviews go with C programmers that are domain experts in my area.
I hope someone will run a workshop at ICFP next year. I think it would be very valuable. I may propose a topic for the commercial use program that demonstrates use of ATS in a micro with a Haskell GUI talking over USB to it. I just have to get some permissions from my company on what I can and cannot reveal, but I have a fully working application.
Basically, I need ATS to thrive to use it commercially, as our products live 10+ years. That said, I think the embedded world needs a new language to replace C, and my experience so far is this is a very good alternative. I like that I can move up and down processor levels and pick and choose features. So on Atmega, no boxed types, and the compiler tells me when I break that rule, and on something bigger I can malloc, and and on even bigger GC, etc.
But like all new things, infrastructure sometimes matters more technical greatness. Meaning, documentation, learning opportunities, community, and dare I say, marketing :-)
Anyway, cheers to all, and especially Hongwei Xi for the help and toleration of dumb questions. Next trip to Boston and I'm definitely taking him to dinner!