Post by Axel ReichertPost by Julieta ShemPost by Axel Reichertwhich 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.
That's where I am right now. I'm all for studying Racket and Clojure,
but meanwhile I'm sticking to Common Lisp. I never fell in love with a
language so quickly. These new languages may be marvelous in every
single way, but like Alan Perlis would say
``I think that it’s extraordinarily important that we in computer
science keep fun in computing. [...]'' -- Alan J. Perlis (SICP, before
the table of contents.)
Post by Axel ReichertFrom 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.
Maybe that's it. Really fast. Maybe that's a big thing for the fun of
it. Trivial mistakes beginners make are reported with a lot of clarity
by SBCL. I think I've never seen a more clarifying compiler ever in my
life.
Post by Axel ReichertClojure feels more modern (but I am allergic against anything related
to Java) and Racket powerful (but somehow not pragmatic).
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.
Post by Axel ReichertCommon Lisp seems more down to earth, but also baroque (its age
shows).
I'd be careful here. Maybe Common Lisp is still future in various
respects. For example, when it comes to fun --- it's my top first pick.
Can't say what it is, but I'm having a lot of fun with it.
Post by Axel ReichertPost by Julieta Shemseeing 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).
Dig it up! Let's read it and discuss it. You're invited. :-)
Post by Axel ReichertFrom 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),
I think you would like to speak C. It's comforting to know what if
things ever get lower level, you'd be at home. For instance, there's
this new library that nobody created the bindings in Common Lisp or
whatever; you can do it. It's a simple thing at least for an emergency.
C is /simple/ language; that's its best feature.
Post by Axel Reichertcan be used to configure (I should rather say "determine") the setup
of an operating system (Guix SD)
What's the SD in Guix SD? Software distribution?
Post by Axel Reichertand, 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.
Same here. 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. That's not
even true of C, say. C has been updated to do wild things, but gladly
we can still find old compilers and even ask the new ones to behave like
the old ones. Here's a Unix counterexample:
--8<---------------cut here---------------start------------->8---
errno
Kernel designers often add system-specific macros to
errno.h. Workaround: in files that include errno.h, avoid all macros
beginning with the letter E. Recent Linux distributions (recent
versions of glibc) refuse to compile programs that declare extern int
errno without including errno.h. This is a bug, as discussed
below. Correct behavior (all other C libraries: BSD, Solaris, etc.) is
to accept extern int errno whether or not errno.h is included. The
workaround for this Linux bug is to include errno.h everywhere, for
example by compiling with gcc -include /usr/include/errno.h.
Further comments on the Linux bug: When this change was introduced, it
was a clear and flagrant violation of IEEE Std 1003.1-1990 (POSIX),
which specifies the correct declaration to be extern int errno, nothing
more, nothing less. When Paul Wanish formally requested in 2001 that
IEEE issue an "interpretation" of IEEE Std 1003.1-1990 as meaning
something other than what it says, IEEE refused:
IEEE Std 1003.1-1990 specifies that extern int errno; is the correct
declaration for errno. This is not a shorthand for a different meaning.
The glibc authors' excuse for violating IEEE Std 1003.1-1990 (and for
loudly demanding changes in subsequent standards) is that threaded
programs need a variable errno address. This excuse doesn't stand up to
even the slightest examination. Yes, threaded programs need to include
errno.h, but it's trivial to keep extern int errno working for all the
non-threaded programs. The C library simply defines an int errno and has
its address as the initial value for the thread errno pointer.
Source:
https://cr.yp.to/docs/unixport.html
--8<---------------cut here---------------end--------------->8---
Post by Axel ReichertPost by Julieta Shemreading Common Lisp documentation I felt like a computing historian.
[...]
Post by Julieta ShemI 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.)
Thanks for the name of the effect.
Let's end with something that makes a lot of sense to me.
--8<---------------cut here---------------start------------->8---
``The idea that new code is better than old is patently absurd. Old
code has been used. It has been tested. Lots of bugs have been found,
and they’ve been fixed. There’s nothing wrong with it. It doesn’t
acquire bugs just by sitting around on your hard drive. Au contraire,
baby! Is software supposed to be like an old Dodge Dart, that rusts
just sitting in the garage? Is software like a teddy bear that’s kind
of gross if it’s not made out of all new material?''
-- Joel Spolsky, 2000.
Source:
https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i
--8<---------------cut here---------------end--------------->8---