Just another Random Lainon · 2017-10-13 04:04
I've created a new visual programming environment called Seed. It's based on Common Lisp and designed so users can build customized visual programming systems for any kind of problem. You can see a video overview of it here:
https://vimeo.com/237947324
Pic related is what Seed's code view looks like. Instead of lists being denoted by parentheses, Seed presents the code in the form of a tree grid with glyphs denoting the types of different forms and atoms.
Seed is free software, get it here:
https://github.com/phantomics/seed
The installation instructions start here:
https://github.com/phantomics/seed#the-first-step-installing-and-running-seed
So far, only SBCL has been tested. This is alpha software and you will encounter bugs aplenty. Let me know what you think.
Undisclosed · 2017-10-13 04:21
This is what the spreadsheet generated by the OP code looks like. Along with the spreadsheet, Seed's demo code includes a vector graphic editor.
Along with just editing regular Lisp symbols and values in the tree grid, you can also add custom interface elements into your code. One simple example is a color picker in a CSS template, and simple interface elements can be combined into more complex elements. Seed is a Web application built with the React Javascript framework, so the entire ecosystem of React components can be leveraged to build Seed interfaces.
There's lots of hopeful and nostalgic talk about Lisp environments and Lisp operating systems, but Lisp has hitherto been synonymous with Emacs, and Emacs just isn't hospitable for most people and most tasks. As one of the first visual editing environments, it carries a lot of baggage from the teletype terminal days, as tightly coupled as it is to the concept of the text buffer as the primary interactive element.
Seed has the potential to bring the power of Lisp into people in a way that's immediately apparent and highly accessible thanks to it being on the Web.
Bob Arctor · 2017-10-13 10:18
>visual symbolic expression editor in the browser
That looks awesome!
I see you're indenting the lists starting with the second element. When I looked at it I didn't immediately understand it, it looked like function (arg1 arg2) rather than (function arg1 arg2).
Why did you design it this way? I don't think it's bad, it just surprised me. In Lisp the first symbol is special so it makes sense... I guess I was looking at it as if it was an S-expression editor rather than a Lisp editor.
Can you talk more about the symbology you've created? What do the glyphs mean?
Incognito · 2017-10-14 04:12
Sure, let's get into some detail on those glyphs. I call them "dendrograms," and they illustrate different types of form and atom.
In this image, look at the protruding lines to the left of the red numbers on the top two lines. These glyphs mean "number." The glyphs to the left of strings, such as "a2 and "g9 in the OP image, represent strings. The glyph to the lower left of the "let" text in this image represents a function. The glyph to the lower left of each "cell" text in the OP image represents a macro.
The semantics of the dendrogram language can be boiled down to this idea:
Programming exists at the intersection of symbol and order.
Vertical lines represent relationships of order, and horizontal lines represent relationships of symbolism. In the attached pic, note the "a" and "b" on lines 3 and 5. They have a horizontal line that extends to the left, turns downward and merges into the vertical trunk line. The horizontal line denotes their identity as symbols.
Dr. X · 2017-10-14 04:25
Why is the string glyph so much more complicated than the number glyph? Because the implementation of a string is more complex than that of a number in Lisp. In the previous pic, look at the "a" on the seventh line. That "a" is a single character, written as #\a in textual Lisp code.
The glyph next to it has a short vertical line and a short horizontal line projecting from it. The meaning of this is that a character represents a perpendicularity of symbol and order. Numbers are represented by a short vertical line because a number is like a quantum of order, so a character, which is just a number with an assigned meaning in a certain programmatic context, is like a quantum of symbol and order.
The string glyph has the same pair of perpendicular lines as the character glyph, but the segmented line above it represents a segmented data structure, and the unbroken vertical line to the left represents the fact that this segmented data structure can be addressed as one unit. Thus it represents the fact that Lisp implements strings as an array of characters.
By the way, the attached image is part of a specification for SVG graphics. The symbols with the double horizontal line to their left are keywords. The double line reflects the fact that a keyword in Lisp is a symbol that evaluates to itself, and by coincidence it also resembles the colon that's used to denote a keyword in textual Lisp code.
Hitomi · 2017-10-14 04:35
Here's a bit more glyph grammar... I mentioned a couple posts ago the symbol for "macro," which is to the left of each "cell" text in the OP pic. The symbol for "function" is next to the "let" text in the third pic. The macro function looks like it does, with the left line bigger than the right line, because macros expand to create their final expression which gets evaluated. which is symbolized by the line merging with the vertical trunk.
The function symbol has the line to the right a bit above the line to the left because in functions, a set of data is evaluated to produce a different set of data. The vertical offset represents the one piece of data being derived from the other.
Additionally, Seed's glyph format allows for unique glyphs to be drawn for particular functions. Note that there are unique glyphs for the addition "+" and multiplication "*" operations. If you install Seed yourself or watch the video, you'll see glyphs for exponents, division and subtraction as well.
Glyphs are specified using simple lists of numbers. You can see the specifications of all the existing glyphs here:
https://github.com/phantomics/seed/blob/master/seed.express.glyphs.base/glyphs.base.lisp
() · 2017-10-14 18:04
Really pretty. Try to make it fast and usable for a consumer base in a business market.
I know some high frequency trading companies main in OCamL and Haskell im sure theyre are some that also use Common Lisp. Maybe try to get this popular and then push it there although it may be hard because if theyre using lisp they might be using the same environment to program in something else as well.
Good luck
Jamison James · 2017-10-15 16:37
>>4355
Clearly you know your soykaf.
I like the way you manage symbolism.
I cant wait to get my hands dirty on your project.