unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
From: pjb@informatimago.com (Pascal J. Bourguignon)
To: help-gnu-emacs@gnu.org
Subject: Re: About Emacs Modernisation Project
Date: Tue, 01 Jun 2010 14:56:35 +0200	[thread overview]
Message-ID: <lzbpburjwc.fsf@informatimago.com> (raw)
In-Reply-To: c7c3c2f1-66ce-4435-9649-ef6d092bfab1@d12g2000vbr.googlegroups.com

LanX <lanx.perl@googlemail.com> writes:

> Hi
>
>> Do you realize that lisp is actually a very small core language?
>> (eval fits on a single page).
>
> I think that I made quite clear that I want this c/js/perl-style
> representation (lets call it PSILe) to be transformed to eLISP
> _before_ compilation.
>
> Macros will still work on the plain eLISP representation.
>
> (of course defining macros for PLISe wouldn't be easy feasible, but
> normal users won't miss macros...)
>
> The tricky part would be to find a representation that works without
> ambiguities in both directions, such that old lisp code could be used
> as a base for this "new" coding.
>
> I don't know if it's really feasible but it's for sure an interesting
> task.
>
> PLISe <-> eLISP -> Macro expansion -> compilation -> execution

It is effectively entirely feasible.  

See for example parenscript (and jwacs) in CL.
http://common-lisp.net/project/parenscript/
(or Liskell for another example, but there are a lot of them).

Parenscript is a set of functions and macros that allows you to write
javascript code as lisp sexps.  The point of course is to allow
lispers (emacs users) to be able to write barbaric languages
(languages with barbaric syntaxes), on one hand, and to be able to
define macros for these barbaric languages on the other hand (the
macros written in lisp would transform parenscript forms into
parenscript forms, before being translated to Javascript).

(jwacs does the reverse transformation, parsing Javascript and
producing lisp objects; I used it once to revert to the parenscript
form so that I could go between both syntaxes).

This covers the first <-> arrow.


Now to compile parenscript to Common Lisp, you would still need to
implement a run-time library of javascript semantics in lisp (eg. the
object system is quite different, the data types, etc).  In general,
the core languages are easy to translate to Lisp, since they're often
much less sophisticated than Lisp. 

-- 
__Pascal Bourguignon__
http://www.informatimago.com


  reply	other threads:[~2010-06-01 12:56 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <143c6d28-4423-4e43-9fc5-c0fb3340043b@c11g2000vbe.googlegroups.com>
2010-05-31 15:44 ` About Emacs Modernisation Project Pascal J. Bourguignon
     [not found]   ` <0e994fe3-6dde-449f-879d-6701c7a195a9@e28g2000vbd.googlegroups.com>
2010-05-31 19:41     ` Alessandro Piras
     [not found]       ` <87iq63wsvt.fsf@kuiper.lan.informatimago.com>
2010-06-01  0:06         ` LanX
2010-06-01  8:44           ` Pascal J. Bourguignon
2010-06-01 11:19             ` LanX
2010-06-01 12:56               ` Pascal J. Bourguignon [this message]
2010-06-02  6:17         ` Xah Lee
     [not found]       ` <c41c63c0-b934-442d-8385-1abff6ab9b0b@s41g2000vba.googlegroups.com>
2010-06-01  0:40         ` Alessandro Piras
2010-06-02  6:07       ` Xah Lee
     [not found] ` <87ljazofkn.fsf@rapttech.com.au>
2010-05-31 23:33   ` LanX
     [not found]     ` <87r5krh3e0.fsf@unm.edu>
2010-06-01  8:40       ` Pascal J. Bourguignon
2010-06-01 17:34         ` rustom
2010-06-02 12:47           ` B. T. Raven
2010-06-02 17:20             ` rustom
2010-06-01 19:50       ` Stefan Monnier
2010-06-01 23:22         ` LanX
     [not found]           ` <slrni0b8nm.9k6.bergv@u00.math.uiuc.edu>
2010-06-02 11:39             ` Pascal J. Bourguignon
     [not found]           ` <e73e123d-3f0c-4a6f-bbac-b91fb71bf07d@f14g2000vbn.googlegroups.com>
2010-06-03  9:26             ` Emulating namespaces Pascal J. Bourguignon
2010-06-03 15:33               ` LanX
2010-06-03 17:41                 ` Pascal J. Bourguignon
     [not found]         ` <87mxvegz12.fsf@unm.edu>
2010-06-01 23:36           ` About Emacs Modernisation Project Pascal J. Bourguignon
2010-06-02  5:58             ` Evans Winner
2010-06-01 10:28     ` Helmut Eller
2010-06-01 11:27       ` LanX
2010-06-01 12:29         ` Helmut Eller
2010-06-01 12:55           ` LanX
2010-06-01 12:59             ` Pascal J. Bourguignon
2010-06-01 12:59           ` Pascal J. Bourguignon
2010-06-02 17:05       ` Xah Lee
2010-06-02 17:50         ` Helmut Eller
2010-06-04 18:33     ` Joseph Brenner
2010-06-05  2:55       ` Tim X

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/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=lzbpburjwc.fsf@informatimago.com \
    --to=pjb@informatimago.com \
    --cc=help-gnu-emacs@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).