From: Michael Tiedtke <michele.titke@o2online.de>
To: Guile User <guile-user@gnu.org>
Subject: Guile 1.8 / Viper System Interface
Date: Fri, 26 Jun 2015 07:37:07 +0200 [thread overview]
Message-ID: <558CE503.5020807@o2online.de> (raw)
[-- Attachment #1: Type: text/plain, Size: 3454 bytes --]
It might even be more than a decade that I found out about
SCM_NULL_OR_NIL_P and about that "elisp dream" and its completely
useless effects on the Guile source code.
from eval.c
> while (!scm_is_null (SCM_CDR (*lloc))) /* *Perhaps should be**
> ** SCM_NULL_OR_NIL_P, but not**
> ** needed in 99.99% of cases,**
> ** and it could seriously hurt**
> ** performance. - Neil* */
Well, perhaps it was not about performance but /NIL/ is gone as /lang/
in Guile.
I'm currently pulling out /elisp/ "support" from 1.8 completely. An
algorithmic language scheme for me still consists of an evaluator, a
reader, a possibility to display or print values, some magical being
called garbage collector and some other needed primitives. No virtual
machine, no different langs just Scheme plus what you want to have.
You could say I'm using Guile 1.8 as the extension language that it was
meant to be -
but you could as well turn it around and say I'm using it as the system
interface for my scheme application.
My current goals are:
- remove all traces of elisp completely: it's all over the place and
not useful at all (will be finished today)
- implement SCM implementations for terminal control with /ioctl/
calls (and perhaps later /inotify/)
- remove readline support completely - my terminal interface can
already do better
- move functionality to Scheme again: this might even have the
consequence that C routines depend on Scheme implementations
(current implementations of e.g. list processing should be renamed
to opt[imized]-sth
- make the garbage collector controllable from within Scheme
- clean up the reader, clean up macro expansion, support braces and
brackets in terms of code point normalization to make them optional
equivalent alternatives to parenthesis
- clean up, fixes, harmonization of components
Why Guile 1.8? It is easy to extend Scheme, i.e. its system interface,
with SCM. This is the only thing I I have ever done so far under the
hood and my understandings of Guile's core components is next to
imaginary of what they should be.
What about Unicode? While my text editor will eventually support all of
the Unicode Latin sections, my Scheme code will be restricted to Unicode
C which is equivalent to the C locale. This means symbols might even be
restricted to Unicode C0 (7bit ascii) as normalization issues arise
early on: take the accented letter e in Unicode C1: è. It's still an e
and might sometimes even be represented by the to characters E'. The
developer's application itself might know how to handle these cases but
the programming language doesn't need to. And than I don't see any
advantage in having the possibility to define Scheme symbols in terms of
wingdings which is part of the Unicode standard. Current R6RS
implementations allow Scheme symbols (and thus identifiers) to be mostly
arbitrary code points. Greeks could then use their own alfabet to
transcript identifiers. But at the same time R6RS implementations tend
to abuse original greek letters instead of using their latin
transcriptions: they write λ instead of lambda - where they forget
about the capital letter Lambda which looks like this: Λ. That is not
really a problem but I don't need it.
Please let me know when you're interested in a cleaned up Guile 1.8 and
the clean and lean Scheme path.
[-- Attachment #2: Type: text/html, Size: 4254 bytes --]
next reply other threads:[~2015-06-26 5:37 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-26 5:37 Michael Tiedtke [this message]
2015-06-26 6:39 ` Guile 1.8 / Viper System Interface David Pirotte
2015-06-26 10:16 ` Michael Tiedtke
2015-06-26 19:36 ` David Pirotte
2015-06-26 20:23 ` Michael Tiedtke
2015-06-27 21:10 ` Thien-Thi Nguyen
2015-06-28 10:12 ` Michael Tiedtke
2015-06-28 15:19 ` klaus schilling
2015-06-28 16:22 ` David Kastrup
2015-07-06 15:15 ` You can pick a flower! (was VSI) Michael Tiedtke
2016-08-25 15:34 ` Thien-Thi Nguyen
2015-06-28 20:18 ` Guile 1.8 / Viper System Interface Michael Titke
2015-06-28 20:18 ` Michael Tiedtke
2015-06-29 7:11 ` Marco Maggi
2015-06-29 7:55 ` David Kastrup
2015-06-29 8:56 ` Michael Tiedtke
2015-06-29 14:42 ` Tristan Colgate
2015-06-29 14:54 ` David Kastrup
2015-06-29 19:52 ` Michael Tiedtke
2015-06-29 20:15 ` David Kastrup
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/guile/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=558CE503.5020807@o2online.de \
--to=michele.titke@o2online.de \
--cc=guile-user@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).