guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Wisp as shipped language in Guile?


From: Arne Babenhauserheide
Subject: Re: Wisp as shipped language in Guile?
Date: Fri, 19 May 2017 01:03:37 +0200
User-agent: mu4e 0.9.18; emacs 25.2.1

Hi Mark,

Mark H Weaver <address@hidden> writes:

>> Essentially this is about making wisp as language part of the
>> "batteries" of Guile.
>
> About 4.5 years ago, I went out on a limb and added SRFI-105 (curly
> infix expressions) to core Guile.  Even now, I'm of the opinion that
> judicious use of curly infix could be beneficial for readability, but as
> far as I can tell, there's been essentially no uptake.  If I'm wrong
> about that, please let me know.

I’ve been using SRFI-105 quite a bit — not only in Wisp. It helped me in
reducing the reservations colleagues of mine had against Scheme
(prefix-comparisons and prefix-math look odd to many people).

> Anyway, regardless of my personal opinion, I think we need to be careful
> not to add things to Guile that will go unused and merely contribute to
> its increasing bloat.

Given that language/wisp (as I have it here) is less than half the size
of language/elisp or language/ecmascript, and will require much less
maintenance (it is in final form and will automatically benefit from all
improvements to Scheme proper — different from both elisp and ecmascript
which need to follow a moving target to keep their utility) and that it
is less than twice the size of language/brainfuck, I think calling Wisp
part of bloat isn’t right.

> I think the relevant question is: are a
> non-trivial number of people likely to use this?  For starters, do you
> know anyone writing non-trivial amounts of Wisp code other than
> yourself?  You might expect that to change if we added it to core Guile,
> but that didn't seem to happen with SRFI-105.

This depends on what you consider non-trivial.

Two weeks ago CalGuixSD said in IRC he’d written the system definition
for Guix in Wisp. However he had to give up on that, because it would
have required to install Wisp while he did not have Guix
yet. (https://gnunet.org/bot/log/guix/2017-05-03).

This is actually what prompted me to write here again: In this usecase
it acts to facilitate entry into Scheme, because using the language for
setup is an obvious case where people get put off by the parens at
first. And different from other notations, going from Wisp to regular
Scheme is trivial: automatic conversion even keeps the comments.

Using Wisp as system language is among the things people can only do
when they always have Wisp with Guile — when it’s part of its batteries
(along with brainfuck, javascript and elisp).


Aside from being a good starter, there are domains where I see Wisp as a
different quality of readability, for example when it comes to text-rich
formats (I think you know the talk from FOSDEM:
https://fosdem.org/2017/schedule/event/naturalscriptwritingguile/ ).


Finally I see that Wisp is the one project of mine which generates the
most interest (as estimated by people reading its site — easily twice as
many as those who have read my Freenet articles (since 2010!) — and from
people asking how to use it), so I would like to make Wisp easier for
people to use. It seems that Wisp draws people.


> So, unless Wisp is being used by more people than I suspect, my personal
> take on this is that we should not incorporate Wisp into Guile at this
> time.
>
> On the other hand, if there are sane changes that we can make to Guile
> that would facilitate adding support for languages like Wisp and
> SRFI-110 to Guile via external libraries, I would absolutely be in favor
> of working toward that goal.

The main missing piece I see right now would be the option for
language/<lang>/spec.scm to automatically add suffixes to
%load-extensions when switching to a language and removing them when
switching back (along with a solution for .<ext>.go).

Or providing a mapping from extension to language.

One of these would also be needed for *.el(elisp) and *.js(ecmascript).

However this will not allow using Wisp in the REPL on Guile
installations without adapting the load path or installing a package
systemwide.

For usability there is a large difference between

guile --language=wisp

and

guile --language=wisp -L ~/.local/lib/<something>

Also if you’re on a readonly system with Guile but without admin-added
Wisp, or on a system without internet access, you cannot use Wisp if it
is not provided by Guile or the admin/system author.

> For example, I've pondered the idea of making the "reader directive"
> mechanism (e.g. things like #!curly-infix) easily extensible.  For
> example, we could perhaps arrange for 'read', when encountering "#!FOO"
> in the input stream, to look for a module named something like (system
> reader-directives FOO) which would extend the reader as needed.
>
> What do you think?

That sounds useful on its own, though it does not resolve the problem of
having to adjust the load path or needing the permission to install
systemwide.

> PS: While visiting the web page <http://draketo.de/english/wisp> to
>     refresh my memory about Wisp details, my browser tried to access
>     port 8888 on my local machine.  Looking at your site code, I see
>     that there's an iframe element with
>     src="http://127.0.0.1:8888/Sone/viewSone.html?sone=[...]";, and also
>     an input element with value="http://127.0.0.1:8888";.  You might want
>     to fix those.

That iframe is for using a Freenet service (Sone) as decentralized
comment system for websites, so these aren’t mistakes per-se. However
they got broken by recent security tightening in Freenet, so I actually
should remove them until I create a stronger system.

Best wishes,
Arne
--
Unpolitisch sein
heißt politisch sein
ohne es zu merken

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]