Emacs is old, AWK is old, Unix is old.
Many of the good tools are old ...
On Wed, 10 Jan 2024 22:45:37 +0100, Axel Reichert wrote:
Emacs is old, AWK is old, Unix is old.
Many of the good tools are old ...
Only the ones that people still remember, because they are still in common use.
And also because their modern incarnations are quite different from
how they were in the early days.
... I'm not aware
of any Lisp that comes with its own GUI builder. Certainly you can use
FFI and a widget library ...
Julieta Shem <jshem@yaxenu.org> writes:
Axel Reichert <mail@axel-reichert.de> writes:
which brings me back to your original question: Since Guile is
advertised with its POSIX capabilities, I expect you could find a
better/more familiar technique there.
But that is just guessing and gut feeling, not based on any research.
Relative to my desires that's good intuition. I've been looking for a
Lisp as a medium of expression and Racket does appear to be the most
sophisticated one.
Sounds familiar. Some years back I was torn between (Steel Bank) Common
Lisp, Clojure and Racket.
From an aesthetic/minimalistic point of view, I prefer
Lisp-1s/Schemes, but SBCL is just an awesome interactive experience in
Emacs with SLIME and really fast.
Clojure feels more modern (but I am allergic against anything related
to Java) and Racket powerful (but somehow not pragmatic).
Common Lisp seems more down to earth, but also baroque (its age
shows).
seeing how much fun I was having just considering Common Lisp I did
think of Guile precisely because of the GNU Guix connection.
I somewhere read that Guile is the most Common-Lisp-like of the Scheme implementations (if you ask for it, I will try to dig up the link).
From my above paragraph, you can imagine that this is intriguing for
me. Especially having a reasonably fast general purpose language that purportedly integrates well with everything POSIX or C (I do not speak
C),
can be used to configure (I should rather say "determine") the setup
of an operating system (Guix SD)
and, with this OS, also for Emacs (since Guix SD has Guile Emacs,
which otherwise is said to be quite an endeavour to build/install). I
really like to reduce the number of tools in my box, provided they are powerful and I am willing to learn them deeply.
reading Common Lisp documentation I felt like a computing historian.
[...]
I do enjoy the history of computing quite a lot and it does feel good
to actually use tools older than the current ones that actually feels
/quite/ superior
Sure, and again, sounds familiar. Emacs is old, AWK is old, Unix is
old. Many of the good tools are old, it is called
https://en.wikipedia.org/wiki/Lindy_effect
Learn them early, try to master them until late in your life. (This
makes sense only for both powerful and versatile tools.)
Axel Reichert <mail@axel-reichert.de> writes:
I somewhere read that Guile is the most Common-Lisp-like of the
Scheme implementations (if you ask for it, I will try to dig up the
link).
Dig it up! Let's read it and discuss it. You're invited. :-)
I think you would like to speak C.
What's the SD in Guix SD? Software distribution?
I like keep the box small and I do choose tools that I can carry with
me for a life time. That's another thing about Common Lisp that feels
very good --- you find papers and books that are ``old'' and they
describe things that are still exactly like they said.
It doesn’t acquire bugs just by sitting around on your hard drive.
Question is whether you want to write GUI programs. Then Armed Bear
Common Lisp, Clojure or Racket have the edge ... Armed Bear and
Clojure can use Java-based GUI builders and libraries, and Racket has
its own builder and libraries.
George Neuner <gneuner2@comcast.net> writes:
Question is whether you want to write GUI programs. Then Armed Bear
Common Lisp, Clojure or Racket have the edge ... Armed Bear and
Clojure can use Java-based GUI builders and libraries, and Racket has
its own builder and libraries.
Good point, but I am not affected, no GUI ambitions here.
And also because their modern incarnations are quite different from how
they were in the early days.
Julieta Shem <jshem@yaxenu.org> writes:
Axel Reichert <mail@axel-reichert.de> writes:
I somewhere read that Guile is the most Common-Lisp-like of the
Scheme implementations (if you ask for it, I will try to dig up the
link).
Dig it up! Let's read it and discuss it. You're invited. :-)
https://ane.iki.fi/2020/10/05/between-two-lisps.html
Somewhat more biased, and, strictly speaking, off-topic here:
https://www.wingolog.org/archives/2013/01/07/an-opinionated-guide-to-scheme-implementations
I think you would like to speak C.
Sure. Not only because there is an awful lot of open source software
written in it, but also due its enormous historical importance.
https://www.buildyourownlisp.com/
(Lisp in C) is on my Emacs/Org mode to-do list for quite some time ...
What's the SD in Guix SD? Software distribution?
Ah, sorry, using the old name, nowadays it is just Guix System (the OS) versus Guix, the package manager.
Axel Reichert <mail@axel-reichert.de> writes:
https://www.wingolog.org/archives/2013/01/07/an-opinionated-guide-to-scheme-implementations
Less fun to read.
Get good at using your REPL (or the IDE, in the case of Racket).''
I use ``IDE'' very loosely
It seems s/he says Racket has an IDE. I suppose DrRacket.
And somehow that means Racket doesn't have a REPL?
https://www.buildyourownlisp.com/
(Lisp in C) is on my Emacs/Org mode to-do list for quite some time ...
You'll enjoy it! This book is great fun. Each picture is a joke.
Ah, sorry, using the old name, nowadays it is just Guix System (the OS)
versus Guix, the package manager.
And what did it mean?
( SETQ DIFF
( LAMBDA( X )
...
( LIST 'SUM( DIFF( CADR X ))( DIFF( CADDR X )))))))))
On 11 Jan 2024 10:12:41 GMT, Stefan Ram wrote:
( SETQ DIFFThat looks like some Lisp-1 (Scheme-type) dialect.
( LAMBDA( X )
...
( LIST 'SUM( DIFF( CADR X ))( DIFF( CADDR X )))))))))
Lawrence D'Oliveiro <ldo@nz.invalid> writes:
On 11 Jan 2024 10:12:41 GMT, Stefan Ram wrote:
( SETQ DIFFThat looks like some Lisp-1 (Scheme-type) dialect.
( LAMBDA( X )
...
( LIST 'SUM( DIFF( CADR X ))( DIFF( CADDR X )))))))))
For now, I'm using, IIRC, "NewLisp" and
( setq SETQ setq )
( SETQ NULL null? )
( SETQ ATOMP atom? )
( SETQ T true )
( SETQ CAR first )
( SETQ CDR rest )
( SETQ PROGN begin )
( SETQ LENGTH length )
( SETQ COND cond )
( SETQ APPEND append )
( SETQ CADR( lambda( X )( CAR ( CDR X ))))
( SETQ CADDR( lambda( X )( CAR ( CDR ( CDR X )))))
. I was not able to convert "lambda" to uppercase, though.
So, I have to write:
( SETQ DIFF
( lambda( X )
( COND
...
.
Likely because lambda is syntax, not a symbol.
Julieta Shem <jshem@yaxenu.org> writes:
Likely because lambda is syntax, not a symbol.
The Hyper Spec (indirect quotation) does call "lambda" a "symbol":
|lambda expression n. a list which can be used in place of a
|function name in certain contexts to denote a function by
|directly describing its behavior rather than indirectly by
|referring to the name of an established function; its name
|derives from the fact that its first element is the symbol
|lambda.
. Since I use "NewLisp", what should be relevant in my case should
actually be NewLisp! The NewLisp manual says indeed:
|Note that the lambda keyword is not a symbol in a list,
|but a designator of a special type of list: the lambda list.
. Insofar, you are right when you say it's not a symbol!
It's a keyword (in NewLisp).
I'd hesitate to call lambda "syntax", but I thing you might meant
to say it's /part of/ the syntax, which is what a keyword is.
It's hard to pinpoint what it is with Racket. Maybe I'm not good enough
for Racket. Maybe I'm too stupid for Racket.
On Wed, 10 Jan 2024 20:45:32 -0300, Julieta Shem <jshem@yaxenu.org>
wrote:
It's hard to pinpoint what it is with Racket. Maybe I'm not good enough >>for Racket. Maybe I'm too stupid for Racket.
The full #racket language is very powerful and it can be difficult to
learn. However, there are a number of dedicated "learning" languages
which limit what the programmer can do, and have better error messages
to help newbies.
example. I created a macro that avoided some redundancies but it
actually needed a variable capture to even do what I wanted. I
wanted the very wrong thing. I did it, saw it working and then found
George Neuner <gneuner2@comcast.net> writes:
On Wed, 10 Jan 2024 20:45:32 -0300, Julieta Shem <jshem@yaxenu.org>
wrote:
It's hard to pinpoint what it is with Racket. Maybe I'm not good enough >>>for Racket. Maybe I'm too stupid for Racket.
The full #racket language is very powerful and it can be difficult to
learn. However, there are a number of dedicated "learning" languages
which limit what the programmer can do, and have better error messages
to help newbies.
--8<---------------cut here---------------start------------->8---
Everything I say below is about me. I'm not at all evaluating anyone's
work from a non-particular and non-personal perspective. >--8<---------------cut here---------------end--------------->8---
Their error messages are very clear in these teaching languages. I'm
very grateful for having read HtDP. I consider it very highly --- I
feel there is no other publication that matches it on the objective it
set for itself. It's a unique book in the whole world to the best of my >knowledge.
I think there might be a non-small gap between HtDP and the Racket
language. I think the authors might recognize this because some of them
also wrote other books on the Racket language. I would believe that
their advice for someone like me would be to, having read HtDP, follow
up with the ``Realm of Racket'', say, which I have /tried/ and confess
the gaming context was an obstacle --- it's not like I can't abstract
all that away and focus on the language only. (I despise computer
games.)
Let's take a look at Beautiful Racket, which I've also read. Marvelous
work in the sense of showing what Racket can do, but I think it fails in >teaching because when I read a programming language book I'm putting an >engineer hat and looking for intuition on how things work on the inside
so that I can manipulate those primitives and build something I can
dream up. Beautiful Racket gives you tools that hide how the language
works (in the spirit of easeing the burden on the beginner's shoulders),
so after finishing the book, you must still continue to dig to see the
deeper level. It's the opposite of a draft such as
https://felleisen.org/matthias/lp/
that I found by accident in the last days. It's been great reading for
me. Also in the last days I've been trying to read the Evaluation
Model, but it's a bit difficult for a beginner. The draft above is
helpful because it seems to show Racket works in a very simplified
manner from the ground up in a pedagogical context.
Another hypothesis I've been considering lately (to explain my failures)
is that Racket has been taking the language-orientation hard and that
doesn't help a beginner to climb up slowly (with my psychology and >background). Let me elaborate on this point. People here gave me the >try-Common-Lisp insight in the last days. I ``invented'' some >program-project to write in it and I've been writing it (very slowly)
and having a lot of fun. But why? I think it's because of the >permissiveness of Common Lisp. Here's an example. I created a macro
that avoided some redundancies but it actually needed a variable capture
to even do what I wanted. I wanted the very wrong thing. I did it, saw
it working and then found a way of not committing such ``grave'' crime.
In Racket, I think I would not even manage to pull something like that
off because the language is designed to avoid such crimes. This implies
I need proper education before I can play with it and that seems to hurt
my solo pedagogical adventure.
I believe that the more I do Common Lisp, the more I understand Racket.
By seeing the crime I was committing, I thought of Racket --- ``oh,
maybe that's why Racket macros must received syntax objects with lexical
and scope information to go along with it''. ``The compiler won't let
me mix them up unless I learn how to hack these objects myself, which
being so clueless here I wouldn't even know how to do --- bummer. I
can't continue to do what I want, so I can't continue my Racket writing >pratice. I need to continue my documentation harvesting and so on and
maybe some days later I can come back to the writing.'' Sure I can ask
for help and so on. I've been doing it. If a ladder is so steep that a
weak person can't go up, it seems to delay the moment where one finds
enough strength to go up.
I understand serious languages are designed to protect programmers from >making unwise things, but maybe that has an impact on education. Seeing
the lab explode is likely educational and things do not explode if
building the contraptions are sufficiently hard.
Keep in mind that I'm not asking the Racket language to be any easier on
me or somehow adapt to my psychology. I'm a USENET member, so I can
share my experience just for the fun of it. I should also say that
Common Lisp has allowed me in a few days to get an enthusiasm than I
haven't gotten with any Racket program I've written in the past --- I
wrote two small systems that worked in production for various years and
are now retired; both of them would periodically download information
from an API source, store it locally and serve it to other systems. I >totally consider that my Racket reading and (little) practice has surely >prepared me for having all the fun I'm having with Common Lisp in the
last days.
having read HtDP. I consider it very highly
Beautiful Racket gives you tools that hide how the language works (in
the spirit of easeing the burden on the beginner's shoulders), so
after finishing the book, you must still continue to dig to see the
deeper level.
It's the opposite of a draft such as
https://felleisen.org/matthias/lp/
that I found by accident in the last days.
I created a macro that avoided some redundancies but it actually
needed a variable capture to even do what I wanted.
I wanted the very wrong thing. I did it, saw it working and then
found a way of not committing such ``grave'' crime.
On Mon, 15 Jan 2024 00:32:11 -0300
Julieta Shem <jshem@yaxenu.org> wrote:
example. I created a macro that avoided some redundancies but it
actually needed a variable capture to even do what I wanted. I
wanted the very wrong thing. I did it, saw it working and then found
Variable capture in macros isn't necessarily wrong. The book "Let Over Lambda"[1] by Doug Hoyte presents some interesting examples of
intentional variable capture in Common Lisp macros.
Could it be that you re-invented anaphoric macros?
https://unintelligible.org/onlisp/onlisp.html#SEC99
Thank you for the name of it. Paolo Amoroso had already pointed out
Doug Hoyte's book. (Thanks, Paolo.)
"On Lisp" as a whole will probably suit you well.
Thank you!
Julieta Shem <jshem@yaxenu.org> writes:
Beautiful Racket gives you tools that hide how the language works (in
the spirit of easeing the burden on the beginner's shoulders), so
after finishing the book, you must still continue to dig to see the
deeper level.
Well, aren't Lisps supposed to be extremely high-level languages?
I created a macro that avoided some redundancies but it actually
needed a variable capture to even do what I wanted.
Could it be that you re-invented anaphoric macros?
https://unintelligible.org/onlisp/onlisp.html#SEC99
"On Lisp" as a whole will probably suit you well.
Variable capture in macros isn't necessarily wrong. The book "Let
Over Lambda"[1] by Doug Hoyte presents some interesting examples of intentional variable capture in Common Lisp macros.
Thank you! I think that's chapter 6, anaphoric macros.
On Sat, 20 Jan 2024 07:26:22 -0300
Julieta Shem <jshem@yaxenu.org> wrote:
Variable capture in macros isn't necessarily wrong. The book "Let
Over Lambda"[1] by Doug Hoyte presents some interesting examples of
intentional variable capture in Common Lisp macros.
Thank you! I think that's chapter 6, anaphoric macros.
Yes, that's it. Paul Graham's classic "On Lisp" covers anaphoric macros
too.
Thank you! I think that's chapter 6, anaphoric macros.
On 2024-01-20, Julieta Shem <jshem@yaxenu.org> wrote:
Thank you! I think that's chapter 6, anaphoric macros.
Breaking news! Evidence of amphoric Lisp macros was found in an
acient Greek clay jar!
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 437 |
Nodes: | 16 (2 / 14) |
Uptime: | 187:17:33 |
Calls: | 9,135 |
Calls today: | 2 |
Files: | 13,429 |
Messages: | 6,034,912 |