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.kam...@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.