highly parametric interfaces Alex Shinn (14 Apr 2006 03:42 UTC)
Re: highly parametric interfaces John Cowan (14 Apr 2006 04:52 UTC)
Re: highly parametric interfaces Per Bothner (14 Apr 2006 05:50 UTC)
Re: highly parametric interfaces Alex Shinn (16 Apr 2006 06:14 UTC)
Re: highly parametric interfaces Marc Feeley (14 Apr 2006 11:47 UTC)

Re: highly parametric interfaces John Cowan 14 Apr 2006 04:52 UTC

Alex Shinn scripsit:

>   Perl effectively uses the latter, passing
>   hash-tables as arguments to complex functions, but Perl's
>   hash-table syntax makes this feel more like a keyword interface,
>   discussed below.

Lua, which only has hashtables (the constructor is { ... }) allows
calls of the form foo{bar=baz, zam=quux}, which passes a single
hashtable argument, although parentheses are normally required
around all arguments.

> * Efficiency-oriented OOP - "Just set the parameters in the calling
>   object."  This person of course assumes there are no functions,
>   only methods, and only for a single calling object.  This is where
>   you get:
>
>     (define fmt (make-number-formatter))
>     (number-formatter-set-complex-behavior! fmt O_POLAR)
>     (number-formatter-set-magnitude-style! fmt O_FLOAT)
>     (number-formatter-set-magnitude-places! fmt 2)
>     (number-formatter-set-magnitude-radix! fmt 8)
>     (number-formatter-set-angle-style! fmt O_FLOAT)
>     (number-formatter-set-angle-radix! fmt 10)
>     (number-formatter-format fmt n)

As I pointed out earlier, you actually don't:  you get
some variant of (fmt 'complex-behavior-set! O_POLAR) or
(fmt 'set! 'complex-behavior O_POLAR).

>   [Alists are] fully general, and can express nested formats like the
>   polar example naturally.  Unfortunately, for more typical examples
>   this is usually going to involve backquotes and commas
>
>     (button `((text . ,(gettext "OK")) (action . ,quit)))

Which is why my proposal #2 uses keyword syntax as an alternative
representation of an alist or plist backquoted.

--
While staying with the Asonu, I met a man from      John Cowan
the Candensian plane, which is very much like       xxxxxx@ccil.org
ours, only more of it consists of Toronto.          http://:www.ccil.org/~cowan
        --Ursula K. Le Guin, Changing Planes