593 karma · joined November 14, 2013
CL-USER> (write-to-string
(let ((y 4))
(common-cold:slambda (x)
(* x y))))
"#.(S:F '1 '(4))"
CL-USER> (funcall (read-from-string *) 3) ;; * here means reference to the last returned value
12 (union (lambda (x y) (cond ((null x) y) ((member
(car x) y) (union (cdr x) y)) (t (cons (car x)
(union (cdr x) y))))))
It had a MAPLIST (today called MAPCAR): maplist[x;fn]=[null[x]->NIL;
t->cons[fn[x];maplist[cdr[x];fn]]]
Or APPEND: append[x;y] = [null[x] -> y; T -> cons[car[x]; append[cdr[x];y]]]
Et cetera. Sure, it also had, say, NCONC. But it had these operators and style from the beginning, not surprisingly, as Lisp came from lambda calculus.So "modern" languages without macros have such patches every now and then. Still, it's easy to find boilerplate in programs.
The reason is that a lot of boilerplate is specific to the program's domain, and you're left with cumbersome syntactic patterns and no tools to abstract them.
So yes, you need to learn how to write macros. But, assuming good taste, the simplicity is in their use, not their definition. It's a good tradeoff because macros are used much more often than they are defined.
By the way, the language introduced by a macro often allows arbitrary Lisp code to be mixed with it. The example did not demonstrate this, and that's why you had an easy time thinking up a non-macro alternative (which still has some unfortunate implications, like needing to interpret at runtime).
You can come up with something like:
(from u in users where u.age > 18 select u.name)
It's a simple matter of programming.While they may be useful in propaganda, state or commercial, I'm not sure why Microsoft GitHub would find it useful to generate volumes of bullshit source code.
BTW I used Xidel some years ago and it was great, so thanks!
Lots of fun...
[0] https://www.gnu.org/licenses/license-compatibility.en.html
Tierney et al. authored both XLisp Stat and Lisp Stat. You took the code and modified it. There's nothing wrong with that, but you also present this modified code as Lisp Stat, a project "inspired" by XLisp Stat. You gave this code a new license, too.
I wonder what's the purpose of using "Lisp Stat" and "Symbolics" as project/company names, if not to mislead others. If that was not your intention, consider being more explicit about what is authored by you, and what is authored by others, and avoid using the same name for your project as that of the historical project.
Hopefully when the joke is over, the owner will instead redirect to Tierney's site or replace this nonsense with something more respectful.
This is Lisp-Stat.
This website looks like a (sad, tasteless) April Fools' joke.
I guess we can agree that it's not a sufficient condition, but from my selection of languages you may consider that maybe I meant it as a necessary condition.
Another interesting separator is: does it include "Lisp" in its name? Scheme and Dylan don't. Maybe people don't use "Lisp" in the name to indicate that they intend the language to break away in some way from the Lisp tradition. In a similar way, Racket broke away from Scheme tradition, for example.
Kent Pitman, in his "Lambda the Ultimate Political Party" article, wrote that people have been writing programs to help transition code written in the older dialects to the new dialects. The fact that it's doable without expending too much energy also suggests close relationship. Some months ago I wrote some <100 lines of code, consisting mostly in a bunch of macros, to make a program using Flavors work on Common Lisp with CLOS. Are the people using Clojure, Janet, etc. doing this? Can they pick up an old program written in another Lisp dialect that's close to them and, with not too much fuss, make it run? Which dialect would that be?
Some languages that don't have CONS cells: Clojure, Janet, Julia, R.
Of course, that is only one attribute, and may not be the most important one, but it's an interesting separating line.
If you describe each language by a set of language feature attributes, you can perform some easy computations (e.g., Jaccard distance, or some clustering) to get more clue about how related these languages really are. I think Janet wouldn't fare so bad in relation to obvious Lisps, so I'm not strongly opposed to calling it a Lisp.
My next one was "does Wayland have something like that?"
Quick search brings up uinput, a kernel module...
Sorry, ddevault :)
So, is Bel finished or still changing? Are there other programs that depend on it? If Bel is developed "axiomatically", maybe not programs, but more thinking about the theory of computation may be its driver of change.