Dear list, I built a compiler in Haskell for a primary school third-grade programming concept. It features in the math workbook the class uses. The language is tiny and its semantics are towers of stacked cubes [*]. The compiler currently has: * a parsec parser * a highlighter for parse errors * a pretty-printer for the language (inverse to the parser) * an SVG generator Education goals are 1. procedural thinking (the language has non-nested loops) 2. abstraction 2a. try to imagine the tower by looking at the source code 2b. identitfy the program whose semantics is a given tower 3. the write code-compile cycle (understand error messages) The target school uses iPads (presumably of the pre-arm generation) whence cross-compiling is probably too much hassle. Therefore I am considering wrapping the compiler in a Yesod webserver, as SVG is natively embeddable in HTML. Is the webserver approach favourable for a class environment? Could I have hacked it together more easily using other education frameworks, e.g. Scratch? Cheers, Olaf [*] The semantics is even a monoid homomorphism from the monoid of sequences of commands to the commutative monoid of cube towers.
I can't say that I'm familiar with frameworks around Scratch for development. However, in a general sense, building a backend server that provides a web interface for usage on an iPad seems perfectly reasonable to me. I've never done exactly that for development tools, but I've used Yesod for making mobile-friendly sites plenty of times. On Wed, Sep 7, 2022, at 10:56 AM, Olaf Klinke wrote:
Dear list,
I built a compiler in Haskell for a primary school third-grade programming concept. It features in the math workbook the class uses. The language is tiny and its semantics are towers of stacked cubes [*]. The compiler currently has:
* a parsec parser * a highlighter for parse errors * a pretty-printer for the language (inverse to the parser) * an SVG generator
Education goals are 1. procedural thinking (the language has non-nested loops) 2. abstraction 2a. try to imagine the tower by looking at the source code 2b. identitfy the program whose semantics is a given tower 3. the write code-compile cycle (understand error messages)
The target school uses iPads (presumably of the pre-arm generation) whence cross-compiling is probably too much hassle. Therefore I am considering wrapping the compiler in a Yesod webserver, as SVG is natively embeddable in HTML. Is the webserver approach favourable for a class environment? Could I have hacked it together more easily using other education frameworks, e.g. Scratch?
Cheers, Olaf
[*] The semantics is even a monoid homomorphism from the monoid of sequences of commands to the commutative monoid of cube towers.
_______________________________________________ Education mailing list Education@haskell.org https://mail.haskell.org/cgi-bin/mailman/listinfo/education
participants (2)
-
Michael Snoyman -
Olaf Klinke