unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
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 --]

             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).