Codeworld: An open-source educational programming environment using Haskell
github.com
github.com
The main weaknesses I see are (1) the sample programs are all 20+ LOC long... a young child doesn't want to write more than ONE line of code without a meaningful result. (2) The syntax is so unforgiving... I think the ideal tool for learning programming would follow the mantra "do what I mean not what I say" and fill in gaps to generate a result (sort of like how web browsers will go to great lengths to render even the most flawed html.)
These are not really limitations in your software, just additional enhancements that could be added to your software that would really make it shine!
Learning Haskell would be more fun once you are good at basics.
> a young child doesn't want to write more than ONE line of code without a meaningful result.
This is something that I completely agree with and found to be true in my experience. To this end, I've found IPython to be an excellent way of giving feedback while coding. The notebooks have a nice UI, documentation is readily available and its much easier to edit mistakes by simply editing the cell.
I'd recommend you give IPython a shot.
Yeah, the examples are a mess right now. Let me point you to a couple things: first, there's a partially complete tutorial (click the Help button) with some simple examples. Second, (and this is very early on, so please be forgiving!) there's a draft of a textbook at https://docs.google.com/document/d/1NbMtySIDNK40Bk4ImrUAE95S... So yeah, we're working very hard on fixing the documentation issues. Patience!
I don't have such a good answer about syntax. The syntax is about as good as I can make it. There is autocomplete (Ctrl-Space) for built-in function names, and brace highlighting, and I'd love to work on more features to make the programming more interactive with immediate feedback. I also wrote a simplified version of Haskell's standard library and wrote a simple post-processor to reword the more confusing error messages, in an attempt to make it easier to find and fix problems that do occur. If you have ideas or find particularly bad examples, please add a quick example at https://github.com/google/codeworld/issues/new
If this doesn't work, and you look for alternatives to teach programming to your daughter, you might consider Scratch or (if you're still into doing it with functional programming) bootstrapworld.org.
Thanks for looking!
Is this to make it easier for beginners?
That said, uncurrying functions also has a huge benefit when it comes to understanding error messages in Haskell. I love currying in Haskell, and it's very powerful... but it's one of the features that sometimes leads to obscure or misleading errors -- especially when you leave out type signatures... which I do for the first month or two.
Wish there exists a similar environment for other languages like Python, Javascript.