Open cdsmith opened 5 years ago
This is absolutely something I'm excited to work on. More ideas:
translated
, we'd probably want a name like T_{xy}. And we'd definitely want to use mathematical notation for all the little things that CodeWorld cannot, such as the set of real numbers, cartesian products of types. Piecewise functions could be typed with an {
instead of Haskell-format guards. Pattern matching should be changed so that instead of bound variables that shadow global scope, an expression that matches one in global scope is considered a specific value. And so on.Program
type in favor of just having a small selection of "modes" for drawings, animations, activities, and group activities.Chances are this will start out being less capable than the existing mode. That's okay, since it's an alternative rather than a replacement. My hope would be to eventually transition K-12 use cases here, but that's realistically probably 10 years off.
This proposal is to add a math-editor mode for CodeWorld. This would be a new mode that, instead of editing in a standard code editor, would integrate a WYSIWYG math editor into the UI.
Currently, there are three "modes" to CodeWorld.
In this proposal, we'd add a fourth mode: http://code.world/algebra (not a real link) In this mode, instead of a coding editor based on CodeMirror, we'd offer an equation editor (like MathQuill or such, but possibly needing a lot of customization). This would require implementing a language based on the results of the math editor, possibly by converting via Haskell, similar to what we do now with blocks -- or possibly even by implementing an interpreter directly in JavaScript. (Obviously, that's no small undertaking, as it's essentially inventing a brand new language!)
The goal of doing this would be to take the underlying philosophy of CodeWorld even further, by allowing students to write in something even closer to mathematics.
This has some of the same limitations as blocks, in that if the implementation is by conversion to Haskell, then we'd either need to detect and prevent all possible errors at editing time (which is likely to be a leaky moving target), or somehow convert errors from Haskell back into the equation editor.