Implementing Mathematica in Golang

By Xah Lee. Date: .

implementing basic Mathematica in golang. great to learn from.

Expreduce by Cory Walker https://github.com/corywalker/expreduce

by the way, full version of Mathematica Wolfram lang is included free with Raspberry Pi. Raspberry Pi Kit that'd be the easiest way to learn a symbolic pattern matching language

mathematica7 expression forms 2014-07-11
mathematica7 expression forms 2014-07-11

here's what Wolfram Language looks like. note the 3 sections are syntactically equivalent. They can be transformed into each other by pressing a button. The last one, FullForm, is pure nesting of the form F[...] like #lisp. see Wolfram Language, Mathematica

plane tiling mathematica 2016-05-04 35001
plane tiling mathematica 2016-05-04 35001

“every developer should buy a copy of Mathematica, because it will expand their mind.” —#Clojure creator Rich Hickey and here's another notebook. Geometry: Plane Tiling Mathematica Package Geometry: Plane Tiling Mathematica Package

in symbolic pattern matching ruled based lang e.g. Mathematica, there is a property. for 20 years, 90s to 2000s, i don't know how to describe it. Now i know. When i first heard of “denotational semantics”, i thought that's it, but its not.

In java etc, they talk about serialization. i.e. Some “object” have a output form that can be read back. Like JavaScript JSON. In symbolic pattern matching lang e.g. Mathematica, basically the whole lang is “serialized”. That IS the ESSENTIAL requirement for symbolic pattern matching.

note that symbolic pattern matching (example: Mathematica), in not the same as those pattern matching in #ocaml or #haskell. These are not symbolic. Lisp macro, is symbolic pattern matching, but a extremely limited eedeeatic one.

in other words, in symbolic pattern matching lang, there is (basically) no concept in the lang that produces certain “object” or “compiled internal thing”. Everything, is laid out as text, like JSON.

Another way to say is, in symbolic pattern matching lang, the language is just a collection of literal expression. And its computing model is transforming these textual expressions.

If you have a question, put $5 at patreon and message me.