fructure
with-c-syntax
fructure | with-c-syntax | |
---|---|---|
8 | 4 | |
442 | 135 | |
- | - | |
3.7 | 0.0 | |
3 months ago | over 1 year ago | |
Racket | Common Lisp | |
Apache License 2.0 | Do What The F*ck You Want To Public License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
fructure
-
Racket: The Lisp for the Modern Day
Even the racket teachpack libraries designed for education are very capable; I was able to make this structured editor with only using teachpack content without external deps: https://github.com/disconcision/fructure
-
Common Lisp vs Racket
Right, it's fine, and is a pretty basic macro. Doubly linked lists are pretty basic data structures too, even the Rust versions once you figure it out. I like your sibling comment making it look like the CL version. I still want to know in more detail though why you think that doing things this way instead of the CL way is less likely to be "fragile and break down" for the complicated stuff, it would help to have a specific complicated example to showcase. Perhaps the linked https://github.com/disconcision/fructure in another comment would be a good study? The author there claimed they might not have been able to manage with defmacro, maybe someone familiar with both could articulate the challenges in detail. Is it just an issue of some things benefit a lot from pattern matching, and if so, does using CL's Trivia system mitigate that at all (in the same way that using gensym+packages+Lisp-2ness can mitigate hygiene issues)?
- Fructure: A structured interaction engine in Racket
-
graph-based UI for Lisp/Scheme
see also: fructure
- Why text only.
- An Intuition for Lisp Syntax
with-c-syntax
- With-C-Syntax
-
Lisping at JPL Revisited
> but what sub-languages are we talking about? I only see a library with helper functions and macros. That's Common Lisp, not a derivative.
If your language is a DSL factory, the line between your language and DSLs naturally blurs. If https://github.com/y2q-actionman/with-c-syntax exists, does it mean that C is a DSL of Common Lisp, given a good enough standard library? If https://github.com/calyau/maxima exists, does it mean that Maxima is just Common Lisp with more maths? If https://github.com/Shen-Language/shen-cl and https://github.com/coalton-lang/coalton/ exist, does it mean that Shen and Coalton are just a fancy way of writing Common Lisp in an immutable way? If https://github.com/froggey/Iota exists and we can play sdlquake on Mezzano, does it mean that LLVM-IR is a dialect of Common Lisp?
The above series of questions is not meant to be fully credible - it's meant to be food for thought.
-
Common Lisp vs Racket
More to the point of how simple (and easy) defmacro is compared to syntax-case and syntax-rules, I like another fare post: https://fare.livejournal.com/189741.html If you're as smart as fare, it "isn't too hard to translate it".
Though I concede this case could be analogous to trying to write a Doubly Linked List in Rust. So I'd more like to see a concrete case you have in mind where the tradeoffs are squarely against CL. Like, the loop macro is more complicated than any I have written myself, but you can break it down, and it's not that bad -- I think Norvig's version is pretty neat to study: https://norvig.com/paip/loop.lisp This project (and it's not the only one!) adding C syntax to CL https://github.com/y2q-actionman/with-c-syntax I think is more complicated than loop, and is sort of where I'd put the level of "complicated things" at that I'd like to see an example from the Scheme world that clearly shows defmacro's deficiencies on some metrics. (Fewer bugs? Easier to add new features to? Shorter code? Faster performance either at compile time or runtime or both? Easier to understand or faster to implement for people with similar levels of skill in the language?)
-
Using ELisp as an HTML templating engine
Lisp has served as an inspiration to so many programming language designs, Javascript included, that saying a language feature isn't really unique to Lisp is a bit like saying that The Lord of the Rings is just a bunch of fantasy clichés. It's true in some sense, but it also conveys a deeply flawed understanding.
Here[1] is a fun example of what's possible that would be difficult to do in many other languages without essentially just giving up and dumping the C style code in a string and calling some sort of eval on it and that is very much not the same thing.
[1] https://github.com/y2q-actionman/with-c-syntax/
What are some alternatives?
LIBUCL - Universal configuration library parser
maxima - Computer Algebra System written in Common Lisp (GPL CAS based on DOE-MACSYMA)
slimv - Official mirror of Slimv versions released on vim.org
spinneret - Common Lisp HTML5 generator
vlime - A Common Lisp dev environment for Vim (and Neovim)
learning-lisp
cmu-infix - Updated infix.cl of the CMU AI repository, originally written by Mark Kantrowitz
shen-cl - Shen for Common Lisp (Unmaintained)
coherence - Oracle Coherence Community Edition
llama - lisp-like application markup
slime - The Superior Lisp Interaction Mode for Emacs
ltk