Reviewing named and optional parameters Daphne Preston-Kendal 07 Jun 2021 15:45 UTC
Re: Reviewing named and optional parameters Marc Nieper-Wißkirchen 07 Jun 2021 16:07 UTC
Re: Reviewing named and optional parameters Daphne Preston-Kendal 09 Jun 2021 08:49 UTC
Re: Reviewing named and optional parameters Marc Nieper-Wißkirchen 09 Jun 2021 09:13 UTC
Re: Reviewing named and optional parameters Daphne Preston-Kendal 09 Jun 2021 09:42 UTC
Re: Reviewing named and optional parameters Marc Feeley 09 Jun 2021 10:24 UTC
Re: Reviewing named and optional parameters Marc Nieper-Wißkirchen 09 Jun 2021 10:32 UTC
Re: Reviewing named and optional parameters Marc Feeley 09 Jun 2021 12:16 UTC
Re: Reviewing named and optional parameters Marc Nieper-Wißkirchen 09 Jun 2021 12:40 UTC
Re: Reviewing named and optional parameters Marc Feeley 09 Jun 2021 13:10 UTC
Re: Reviewing named and optional parameters Marc Nieper-Wißkirchen 09 Jun 2021 15:56 UTC
Re: Reviewing named and optional parameters Marc Feeley 09 Jun 2021 18:15 UTC
Re: Reviewing named and optional parameters Marc Nieper-Wißkirchen 09 Jun 2021 10:27 UTC
Re: Reviewing named and optional parameters Daphne Preston-Kendal 14 Oct 2021 10:42 UTC
Re: Reviewing named and optional parameters John Cowan 09 Jun 2021 17:22 UTC
Re: Reviewing named and optional parameters Marc Nieper-Wißkirchen 09 Jun 2021 17:37 UTC
Re: Reviewing named and optional parameters Peter Bex 08 Jun 2021 05:17 UTC
Re: Reviewing named and optional parameters Per Bothner 08 Jun 2021 05:38 UTC
Re: Reviewing named and optional parameters Daphne Preston-Kendal 09 Jun 2021 09:00 UTC
Re: Reviewing named and optional parameters Per Bothner 10 Jun 2021 17:23 UTC
Re: Reviewing named and optional parameters Daphne Preston-Kendal 21 Jun 2021 07:23 UTC
Re: Reviewing named and optional parameters Daphne Preston-Kendal 09 Jun 2021 08:55 UTC
Re: Reviewing named and optional parameters John Cowan 09 Jun 2021 14:29 UTC
Re: Reviewing named and optional parameters Marc Nieper-Wißkirchen 09 Jun 2021 14:44 UTC
Re: Reviewing named and optional parameters John Cowan 09 Jun 2021 17:03 UTC
Re: Reviewing named and optional parameters Marc Nieper-Wißkirchen 09 Jun 2021 17:33 UTC
Re: Reviewing named and optional parameters John Cowan 09 Jun 2021 17:37 UTC
Re: Reviewing named and optional parameters Marc Nieper-Wißkirchen 09 Jun 2021 17:40 UTC
Re: Reviewing named and optional parameters John Cowan 09 Jun 2021 19:01 UTC
Re: Reviewing named and optional parameters Marc Nieper-Wißkirchen 09 Jun 2021 19:25 UTC
Re: Reviewing named and optional parameters Daphne Preston-Kendal 10 Jun 2021 10:17 UTC
Re: Reviewing named and optional parameters Marc Nieper-Wißkirchen 10 Jun 2021 11:18 UTC
Re: Reviewing named and optional parameters John Cowan 12 Jun 2021 22:08 UTC
Re: Reviewing named and optional parameters Daphne Preston-Kendal 21 Jun 2021 07:21 UTC
Re: Reviewing named and optional parameters Daphne Preston-Kendal 21 Jun 2021 10:37 UTC
Re: Reviewing named and optional parameters Daphne Preston-Kendal 29 Jul 2021 09:42 UTC
Re: Reviewing named and optional parameters John Cowan 29 Jul 2021 23:34 UTC
Re: Reviewing named and optional parameters Daphne Preston-Kendal 30 Jul 2021 07:03 UTC
Re: Reviewing named and optional parameters Marc Nieper-Wißkirchen 30 Jul 2021 07:31 UTC
Re: Reviewing named and optional parameters John Cowan 30 Jul 2021 21:39 UTC
Re: Reviewing named and optional parameters Marc Nieper-Wißkirchen 30 Jul 2021 21:47 UTC
Re: Reviewing named and optional parameters John Cowan 30 Jul 2021 21:49 UTC
Re: Reviewing named and optional parameters Marc Nieper-Wißkirchen 30 Jul 2021 21:59 UTC
Re: Reviewing named and optional parameters John Cowan 30 Jul 2021 21:32 UTC
Re: Reviewing named and optional parameters Daphne Preston-Kendal 31 Jul 2021 10:02 UTC
Re: Reviewing named and optional parameters Marc Nieper-Wißkirchen 31 Jul 2021 10:29 UTC
Re: Reviewing named and optional parameters John Cowan 31 Jul 2021 17:33 UTC
Re: Reviewing named and optional parameters Daphne Preston-Kendal 31 Jul 2021 17:45 UTC
Re: Reviewing named and optional parameters Marc Nieper-Wißkirchen 31 Jul 2021 18:04 UTC
Re: Reviewing named and optional parameters John Cowan 31 Jul 2021 19:52 UTC
Re: Reviewing named and optional parameters Daphne Preston-Kendal 02 Dec 2021 17:57 UTC
Re: Reviewing named and optional parameters Jeronimo Pellegrini 03 Dec 2021 03:32 UTC

Re: Reviewing named and optional parameters Marc Feeley 09 Jun 2021 13:10 UTC

> On Jun 9, 2021, at 8:40 AM, Marc Nieper-Wißkirchen <xxxxxx@nieper-wisskirchen.de> wrote:
>
>
> > I too can imagine situations where having keyword arguments only on macros would be restrictive:
> >
> > 1) In an object oriented programming style where you call a virtual method through generic call.  The generic call site specifies keyword arguments and there is a dispatch to the actual procedure that does the work that consumes the keyword arguments.
> >
> > The actual procedure can be implemented as a procedure just taking positional arguments. Some nice syntactic abstraction can help to map keyword arguments to positional arguments. I think this would at least also solve point 2) below. I cannot say much about 3) because there is no generally agreed FFI for Scheme and, further, the semantics of keyword arguments in the FFI targets may not be the same or be compatible.
> >
> > 2) In higher order procedures whose procedure parameter accepts keyword arguments.  Syntax isn’t a first-class object that can be passed around.
> >
> > 3) In a FFI between Scheme and a foreign language that supports keyword arguments (Python, Ruby, Common Lisp, Ada, C#, Fortran, R, PHP,  Scala, Smalltalk, etc).
>
> The situations I’m describing can be caracterized as only knowing at run time which set of keyword arguments are allowed and what they mean.  Handling keyword arguments fully at compile time (through macros or some form of compile-time type checking) is thus not general enough.
>
> Could you give a brief code example that would illustrate a real use?
>

A neat dynamic use is sending a procedure to a peer to be executed there (as is possible with Termite):

  % gsi
  Gambit v4.9.3-1427-g46618e76

  > (define (n2s n #!key (base 10)) (number->string n base))
  > (define network (open-string)) ;; in real life a network connection
  > (write (object->u8vector n2s) network) ;; send the procedure to the peer
  > (define f (u8vector->object (read network))) ;; on the peer side
  > (f 49374 base: 16)
  "c0de"
  > (f 49374)
  "49374"

Here’s a second example for a FFI to Python (which is WIP):

  (import (_six python))
  \import math
  (define math.isclose \math.isclose)
  (math.isclose 1.3 1.2)              ;; => #f
  (math.isclose 1.3 1.2 rel_tol: 0.3) ;; => #t

In both cases the acceptable keywords are only known at run time.

Marc