GNU bug report logs - #47875
Elisp reader doesn't handle keywords

Previous Next

Package: guile;

Reported by: Leo Prikler <leo.prikler <at> student.tugraz.at>

Date: Sun, 18 Apr 2021 16:06:01 UTC

Severity: normal

To reply to this bug, email your comments to 47875 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-guile <at> gnu.org:
bug#47875; Package guile. (Sun, 18 Apr 2021 16:06:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Leo Prikler <leo.prikler <at> student.tugraz.at>:
New bug report received and forwarded. Copy sent to bug-guile <at> gnu.org. (Sun, 18 Apr 2021 16:06:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Leo Prikler <leo.prikler <at> student.tugraz.at>
To: bug-guile <at> gnu.org
Subject: Elisp reader doesn't handle keywords
Date: Sun, 18 Apr 2021 18:05:02 +0200
Hi Guilers,

Using Guile 3.0.5, the elisp reader does not seem to support keywords
written in Elisp's preferred prefix-style notation (:keyword).

scheme@(guile-user)> ,L elisp
Happy hacking with Emacs Lisp!  To switch back, type `,L scheme'.
elisp@(guile-user)> :keyword
ice-9/boot-9.scm:1669:16: In procedure raise-exception:
Unbound variable: :keyword

Entering a new prompt.  Type `,bt' for a backtrace or `,q' to continue.
elisp@(guile-user) [1]> ,q
elisp@(guile-user)> (funcall (@ (guile) symbol->keyword) 'keyword)
$1 = #:keyword

Meanwhile in Emacs M-: :keyword yields :keyword.  Using Scheme-style
keywords also does not work:

elisp@(guile-user)> #:keyword
While compiling expression:
uninterned symbol cannot be saved to object file #<uninterned-symbol
keyword 7fb39fa4b5e0>

I think Guile should produce keyword objects for the former, so that we
don't need to talk about the latter.

Regards,
Leo





Information forwarded to bug-guile <at> gnu.org:
bug#47875; Package guile. (Thu, 13 May 2021 22:45:02 GMT) Full text and rfc822 format available.

Message #8 received at 47875 <at> debbugs.gnu.org (full text, mbox):

From: Taylan Kammer <taylan.kammer <at> gmail.com>
To: 47875 <at> debbugs.gnu.org, Leo Prikler <leo.prikler <at> student.tugraz.at>
Subject: Elisp reader doesn't handle keywords
Date: Fri, 14 May 2021 00:43:58 +0200
This seems to have been fixed in the wip-elisp branch.

Note that the branch is a couple years old.  There's a version
of the branch by Ricardo Wurmus (rekado) that's been rebased on
a newer version of Guile, though still not on 3.0:

https://git.elephly.net/?p=software/guile.git;a=shortlog;h=refs/heads/wip-elisp


- Taylan




Information forwarded to bug-guile <at> gnu.org:
bug#47875; Package guile. (Fri, 04 Jun 2021 12:14:01 GMT) Full text and rfc822 format available.

Message #11 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Ivan Sokolov <ivan-p-sokolov <at> ya.ru>
To: bug-guile <at> gnu.org
Subject: Re: bug#47875: Elisp reader doesn't handle keywords
Date: Fri, 04 Jun 2021 15:13:29 +0300
Leo Prikler <leo.prikler <at> student.tugraz.at> writes:

> Using Guile 3.0.5, the elisp reader does not seem to support keywords
> written in Elisp's preferred prefix-style notation (:keyword).
>
> Meanwhile in Emacs M-: :keyword yields :keyword.  Using Scheme-style
> keywords also does not work:
>
> I think Guile should produce keyword objects for the former, so that we
> don't need to talk about the latter.

In Scheme keywords and symbols are separate entities, but in Elisp
keywords are just self-quoted symbols. I think your solution will cause
problems with Elisp algorithms that expect keywords to be symbolp.




Information forwarded to bug-guile <at> gnu.org:
bug#47875; Package guile. (Sat, 05 Jun 2021 21:15:01 GMT) Full text and rfc822 format available.

Message #14 received at 47875 <at> debbugs.gnu.org (full text, mbox):

From: Leo Prikler <leo.prikler <at> student.tugraz.at>
To: Ivan Sokolov <ivan-p-sokolov <at> ya.ru>
Cc: 47875 <at> debbugs.gnu.org
Subject: Re: bug#47875: Elisp reader doesn't handle keywords
Date: Sat, 05 Jun 2021 23:14:25 +0200
Am Samstag, den 05.06.2021, 18:51 +0300 schrieb Ivan Sokolov:
> In Scheme keywords and symbols are separate entities, but in Elisp
> keywords are just self-quoted symbols. I think your solution will
> cause problems with Elisp algorithms that expect keywords to be
> symbolp.
You could define Elisp symbolp as 
(lambda (thing)
  (or (funcall (@ (guile) symbol?) thing)
      (funcall (@ (guile) keyword?) thing)))
but perhaps there's an even faster way to check this property.
The other way round – using Emacs keywords as Scheme symbols – will not
perform well if you think about Emacs code calling a Scheme function
that expects keywords.

Regards,
Leo





Information forwarded to bug-guile <at> gnu.org:
bug#47875; Package guile. (Sun, 06 Jun 2021 18:22:02 GMT) Full text and rfc822 format available.

Message #17 received at 47875 <at> debbugs.gnu.org (full text, mbox):

From: Ivan Sokolov <ivan-p-sokolov <at> ya.ru>
To: Leo Prikler <leo.prikler <at> student.tugraz.at>
Cc: 47875 <at> debbugs.gnu.org
Subject: Re: bug#47875: Elisp reader doesn't handle keywords
Date: Sun, 06 Jun 2021 21:21:39 +0300
Leo Prikler <leo.prikler <at> student.tugraz.at> writes:
> You could define Elisp symbolp as
> (lambda (thing)
>   (or (funcall (@ (guile) symbol?) thing)
>       (funcall (@ (guile) keyword?) thing)))
You are right, I haven't thought about changing the implementaion of
symbolp.

> but perhaps there's an even faster way to check this property.
Use guile-primitive instead of guile-ref? Both symbol? and keyword? are
primitives.




This bug report was last modified 3 years and 205 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.