Self-evaluating keywords or not? Marc Nieper-Wißkirchen (16 Mar 2020 13:09 UTC)
Re: Self-evaluating keywords or not? Shiro Kawai (16 Mar 2020 13:45 UTC)
Re: Self-evaluating keywords or not? Marc Nieper-Wißkirchen (16 Mar 2020 13:54 UTC)
Re: Self-evaluating keywords or not? Shiro Kawai (16 Mar 2020 13:58 UTC)
Re: Self-evaluating keywords or not? Marc Feeley (16 Mar 2020 15:38 UTC)
Re: Self-evaluating keywords or not? Marc Nieper-Wißkirchen (16 Mar 2020 16:00 UTC)
Re: Self-evaluating keywords or not? Per Bothner (16 Mar 2020 16:47 UTC)
Re: Self-evaluating keywords or not? Marc Nieper-Wißkirchen (16 Mar 2020 16:53 UTC)
Re: Self-evaluating keywords or not? Shiro Kawai (16 Mar 2020 20:27 UTC)
Re: Self-evaluating keywords or not? Marc Nieper-Wißkirchen (16 Mar 2020 20:37 UTC)
Re: Self-evaluating keywords or not? Lassi Kortela (16 Mar 2020 21:17 UTC)
Re: Self-evaluating keywords or not? Marc Nieper-Wißkirchen (16 Mar 2020 21:31 UTC)
Re: Self-evaluating keywords or not? Shiro Kawai (16 Mar 2020 22:05 UTC)
Re: Self-evaluating keywords or not? Marc Nieper-Wißkirchen (17 Mar 2020 07:14 UTC)
Re: Self-evaluating keywords or not? Shiro Kawai (17 Mar 2020 07:46 UTC)
Re: Self-evaluating keywords or not? Marc Nieper-Wißkirchen (17 Mar 2020 08:05 UTC)
Re: Self-evaluating keywords or not? Shiro Kawai (17 Mar 2020 08:31 UTC)
Re: Self-evaluating keywords or not? Lassi Kortela (16 Mar 2020 22:18 UTC)
Re: Self-evaluating keywords or not? Per Bothner (16 Mar 2020 22:36 UTC)
Re: Self-evaluating keywords or not? Shiro Kawai (16 Mar 2020 22:42 UTC)
Re: Self-evaluating keywords or not? Marc Nieper-Wißkirchen (17 Mar 2020 07:22 UTC)
Re: Self-evaluating keywords or not? Shiro Kawai (16 Mar 2020 21:34 UTC)
Re: Self-evaluating keywords or not? Shiro Kawai (16 Mar 2020 21:43 UTC)
Re: Self-evaluating keywords or not? Lassi Kortela (16 Mar 2020 22:02 UTC)
Re: Self-evaluating keywords or not? Shiro Kawai (16 Mar 2020 22:06 UTC)
Re: Self-evaluating keywords or not? Shiro Kawai (16 Mar 2020 22:19 UTC)
Re: Self-evaluating keywords or not? Lassi Kortela (16 Mar 2020 22:24 UTC)
Re: Self-evaluating keywords or not? Marc Nieper-Wißkirchen (17 Mar 2020 07:28 UTC)
Re: Self-evaluating keywords or not? Per Bothner (16 Mar 2020 22:24 UTC)
Re: Self-evaluating keywords or not? Lassi Kortela (16 Mar 2020 22:56 UTC)
Re: Self-evaluating keywords or not? Per Bothner (17 Mar 2020 00:36 UTC)

Re: Self-evaluating keywords or not? Lassi Kortela 16 Mar 2020 22:56 UTC

> Yes - see
> https://www.gnu.org/software/kawa/Application-and-Arguments-Lists.html
>
> The basic idea is you can create "arglist" or an "argvector" which is a
> kind of list
> or vector, except the keywords are "marked".  You can then pass this
> arglist
> or argvector to apply.
>
> You can also use "slice" syntax, which is more flexible:
>
>     (fun @arglist) === (apply fun arglist)
>
> You can combine arglists:
>
>     (define xargs (arglist 1 2 key: 3))
>     (apply fun (arglist 9 8 @xargs))

> Regular apply suffixes.

Thanks. Using a special arglist object seems much nicer than the
keyword-apply approach.

Here's some actual code I wrote making use of keyword-apply:

;; Usage: (cache-http cache-name url [keyword-args])
;; Any keyword-args are passed to http-sendrecv/url.
(define cache-http
   (make-keyword-procedure
    (lambda (kw-syms kw-args cache-name url)
      (let (...)
        ...
        (let-values
            (((status headers input)
              (keyword-apply http-sendrecv/url kw-syms kw-args (list url))))
          ...)))))

There are several problems with this:

- Had to use `make-keyword-procedure` instead of ordinary `define` or
`lambda`.

- Had to write a comment explaining the "real" argument list accepted by
the procedure.

- Had to use keyword-apply instead of apply (177 also has this problem).

- kw-syms and kw-args are separate lists - would arguably be neater if
it was a single collection.

allow-other-keys/splicing would express this much more nicely.

Does Kawa have allow-other-keys in the lambda-list in some form? I
perused <https://www.gnu.org/software/kawa/Extended-formals.html> but
didn't catch syntax for it.
<https://www.gnu.org/software/kawa/Application-and-Arguments-Lists.html>
is about the other side (caller) as far as I can tell.