From: Andreas Reuleaux <rx@a-rx.info>
To: guile-user <guile-user@gnu.org>
Subject: Re: hashmark in symbols
Date: Mon, 02 Jan 2023 16:20:36 +0000 [thread overview]
Message-ID: <87h6x8x60b.fsf@laptop> (raw)
In-Reply-To: <6e2158f1-4c28-85f3-4283-4aee63332529@gmail.com> (Taylan Kammer's message of "Mon, 2 Jan 2023 07:59:40 +0100")
Hi, thanks for getting back to me in this regard, and yes, you are
right:
Basically my code is a translation of (common lisp)
https://github.com/Inaimathi/cl-css to guile.
So things like this work:
--8<---------------cut here---------------start------------->8---
scheme@(guile-user)> (css '((body :margin 5px :padding 0px)))
$75 = "body { margin: 5px; padding: 0px; }"
--8<---------------cut here---------------end--------------->8---
And more rules, of course, (and compound selectors etc.) like so:
--8<---------------cut here---------------start------------->8---
scheme@(guile-user)> (%display (css '((body :margin 5px :padding 0px)(".label, li p.desc" :font-size .8em :font-family sans-serif :color |#444|))))
body { margin: 5px; padding: 0px; }
.label, li p.desc { font-size: .8em; font-family: sans-serif; color: #444; }
scheme@(guile-user)>
--8<---------------cut here---------------end--------------->8---
with %display being defined as
--8<---------------cut here---------------start------------->8---
#!curly-infix
;; aka "after"
(define $. compose)
(define %display
{(lambda _ (newline)) $. display}
)
--8<---------------cut here---------------end--------------->8---
which brings me back to the hashmark in symbols issue. - I will shorten
the above example to just:
--8<---------------cut here---------------start------------->8---
scheme@(guile-user)> (css '((body :margin 5px :padding 0px :color |#444|)))
$79 = "body { margin: 5px; padding: 0px; color: #444; }"
--8<---------------cut here---------------end--------------->8---
This works - thanks to
--8<---------------cut here---------------start------------->8---
(read-enable 'r7rs-symbols)
--8<---------------cut here---------------end--------------->8---
now. - Alternatively, as you suggested: just as a string:
--8<---------------cut here---------------start------------->8---
scheme@(guile-user)> (css '((body :margin 5px :padding 0px :color "#444")))
$82 = "body { margin: 5px; padding: 0px; color: #444; }"
--8<---------------cut here---------------end--------------->8---
And (your second suggestion) - with string->symbol (but then I have to
interrupt the code with a quote - not sure if this is a win,
it does seem less readable to me:
--8<---------------cut here---------------start------------->8---
scheme@(guile-user)> (css `((body :margin 5px :padding 0px :color ,(string->symbol "#444"))))
$84 = "body { margin: 5px; padding: 0px; color: #444; }"
--8<---------------cut here---------------end--------------->8---
Maybe I can make my code available some time. - It needs a little more
polishing though.
Thanks again.
-A
Taylan Kammer <taylan.kammer@gmail.com> writes:
> On 02.01.2023 07:25, Andreas Reuleaux wrote:
>> Ah, OK, this helps indeed
>>
>> --8<---------------cut here---------------start------------->8---
>> (read-enable 'r7rs-symbols)
>> --8<---------------cut here---------------end--------------->8---
>>
> Another option would be to use string->symbol:
>
> (string->symbol "#444")
>
> That being said, I wonder if it's not better to use strings for this.
>
> Is there any particular reason you want to use symbols to represent CSS
> color values? I assume that your main requirements are:
>
> - Easy to represent as literal values in code.
>
> - Easy to splice into a bigger string (or write into an output stream) that
> will become an entire CSS code snippet or file.
>
> Strings seem like the most straightforward choice. All in all there's not
> much difference though, given that symbols are basically just automatically
> interned immutable strings.
prev parent reply other threads:[~2023-01-02 16:20 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-02 2:27 hashmark in symbols Andreas Reuleaux
2023-01-02 6:04 ` lloda
2023-01-02 6:25 ` Andreas Reuleaux
2023-01-02 6:59 ` Taylan Kammer
2023-01-02 16:20 ` Andreas Reuleaux [this message]
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=87h6x8x60b.fsf@laptop \
--to=rx@a-rx.info \
--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).