socel.net is one of the many independent Mastodon servers you can use to participate in the fediverse.
Socel is a place for animation professionals, freelancers, independents, students, and fans to connect and grow together. Everyone in related fields are also welcome.

Server stats:

315
active users

#grasp

1 post1 participant0 posts today
Replied in thread

@wilfredh in my work on #GRASP that's a very delicate point, because I essentially want to operate on CST.

Another quite big example is syntax-case macros in Scheme, that manipulate syntax objects (which are CST nodes). While they don't exactly preserve comments, they preserve line information, making comments recoverable.

(Also, you'd typically want to preserve line information at all levels down to assembly)

Replied in thread

@nasser I develop #GRASP with Kawa Scheme (which combones Scheme with Java's object system) and I am rather delighted.

I use inheritance very little though (mainly for code reuse), but I use interfaces almost everywhere.

I agree with your opinion about class hierarchies - they are a distraction and tend to make the design unnecessarily rigid.

While working on #GRASP, I occasionally try analyzing #Interlisp's #SEdit (because I'm curious about its internal representation), but I always end up not being able to understand literally anything from that code base.

And that makes me wonder: are the sources of GRASP so much easier to understand to me because I'm their author, or do the programming practices that I use (such as type definitions and plenty of examples) actually make things easier to read?

(A while ago, I did have a look at implementations of some things in #Emacs. The "undo" mechanism is understandable, but it owns this understandability to comments which make up for a missing type system. On the other hand, I've found Emacs' implementation of window splits much more difficult thant in GRASP -- in large part because GRASP is written in #Kawa #Scheme, and has a Java-like OO system, and I feel that classes and objects do a really good job at grouping related things together.