hyper lisp is the front end programming language used to create scripts in magix. it does execute, and it does a lot of interesting things, however, at the core of it, hyper lisp does not exist. hyper lisp has no syntax, and no keywords. the language does not exist, and i can scientifically prove it, yet you can still use hyper lisp for all these interesting things, even though it has no existence
to understand why, you must understand the node structure, which is the ‘syntax’ of hyper lisp
there are many ways to view a node, you can render it as json, c#, or ‘code’. the code view of the node, is a tree structured view, textually represented. this allows for easy reading of the node structure, for the human eye. so the ‘syntax’ you are reading, and writing, when creating hyper lisp, does not exist. in fact, when you are opening what’s referred to as a new ‘scope’ in other programming languages, you are only adding up child node(s) to a tree structure in hyper lisp
you are not writing text, you are manipulating a tree structure, represented as text. hence there exists no ‘code’ or ‘syntax’ in hyper lisp, only trees. and you can just as easily write your ‘code’ as a json expression or c# node manipulation code, or any other ways you wish. as long as you build the correct tree structure. hence, no syntax, and you can easily add your own syntax
in addition, the nodes themselves are not keywords, as they would have been in a traditional programming language. the nodes are actually active events in themselves. when you say [if] in hyper lisp, that transforms into the “magix.execute.if” active event, with all the child nodes as parameters. so not even the keywords themselves even exist in hyper lisp, they are just active events
this means that you can easily add your own keywords to hyper lisp, or remove existing ones, or override existing keywords to point to new implementations, and so on. so the very programming language does not exist, even though both you and me are in fact using it, every day
this might sound weird to oop’ers, but yes, you can polymorphistically override the [if] keyword in hyper lisp. also such that it executes on another server than your original source of execution. 100% transparently, during run time, without even having to take down your server, or even write code
this makes hyper lisp extremely agile, and one can easily perceive different servers, partitioning up different keywords, working together with the parsing of ‘one piece of code’, as if ‘one’. or, how different servers could speak different dialects, still be able to communicate semantically, sending code back and forth to each other. either by mapping to its own dialect, transforming the tree structure, or by finding the smallest common denominator
it is even easy to perceive, how two different servers, could participate together with each other, to execute the same piece of code, by overriding active events such that the code would ‘bounce back and forth’, until it was done executing
it is also easily perceived, how different domain dialects, inevitably will surface. stock traders might need keywords such as [sum] and [avg], while others would need stuff such as [matrix-multiply]
below are two screenshots, that shows how the [for-each] keyword maps to the active event called “magix.execute.for-each”. this is a c# active event, but you could also write keywords in hyper lisp
funny how something that does not exist, can still be so darn useful …
ZimZalaBim – Magix

