On Dec 29, 2014, at 6:03 PM, Greg Hendershott <[email protected]> wrote:
>> But most of all, IMO it sounds like a bad idea since it tries to fight
>> the natural mixed-text-and-expressions and bend it into a
>> format-string-like thing. I'd go with something that avoids that and
>> uses @-expressions more naturally, as in:
>>
>> @my-error['f]{message
>> given: @~v[stuff]
>> other-arguments: @~v[other-stuff]}
>
> I had a similar thought. Actually I have a draft of a blog post
> looking at some handy ways to use @-exprs beyond "it's for writing
> Scribble". One way is to do what I believe langs like Python and Ruby
> refer to as "string interpolation".
>
> Instead of:
>
> (format "x is ~a and y is ~a" x y))
>
> you could write:
>
> @~a{x is @x and y is @y})
But this doesn’t work for values like images, syntax-objects, mixed-numbers,
etc.
that can’t be converted to strings properly, so for example this works: (in
DrRacket)
@my-printf{blah blah ~v@(plt-logo #:height 50) more blah blah ~v@#'stx more
blah blah}
But this doesn’t:
(display @~a{blah blah ~v@(plt-logo #:height 50) more blah blah @#’stx more
blah blah})
Also I want to be able to specify whether I want ~a or ~v etc, especially if
one of the
arguments happens to be a string, while still handling images, syntax-objects
etc. properly.
That’s why I wanted something that looked a bit more like @~a{x is @x and y is
@y}, but
translated it to a format-like structure.
> With the format style you have to flip between the `~a`s on the left
> and the values on the right, making sure they match. How many times
> have you gotten them out of sync? Yeah, me too.
>
> Whereas with the @-expr ("string interpolation") style, writing the
> values "inline" is arguably easier to write, read, and maintain
> correctly.
>
> So if possible it might be nice to have it be @-exprs all the way up,
> rather than hiding that goodness below a format-style interface.
____________________
Racket Users list:
http://lists.racket-lang.org/users