Using APPLY with functions with #!key arguments

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Using APPLY with functions with #!key arguments

Duncan Mak
I think this used to work in older Kawa releases, but how do I use
APPLY to invoke a function like this in Kawa 3.0?

#|kawa:1|# (define (foo x #!key y) (list x y))

#|kawa:2|# (foo 1 y: 2)
(1 2)

#|kawa:3|# (apply foo (list 1))
(1 #f)

#|kawa:4|# (apply foo (list 1 2))
gnu.mapping.WrongArguments

#|kawa:5|# (apply foo (list 1 y: 2))
gnu.mapping.WrongArguments

In Kawa 2.4, this worked:

duncan@furigana:~/Downloads/kawa-2.4/bin$ ./kawa
#|kawa:1|# (define (foo x #!key y) (list x y))
#|kawa:2|# (apply foo (list 1 y: 2))
(1 2)
#|kawa:3|# (apply foo (list 1 2))
(1 #f)


Happy holidays!


--
Duncan.
Reply | Threaded
Open this post in threaded view
|

Re: Using APPLY with functions with #!key arguments

Per Bothner
On 12/27/2017 05:28 PM, Duncan Mak wrote:
> I think this used to work in older Kawa releases, but how do I use
> APPLY to invoke a function like this in Kawa 3.0?
>
> #|kawa:1|# (define (foo x #!key y) (list x y))

You can do this:

(apply foo (arglist 1 y: 2))

which is the same as:

(foo @:(arglist 1 y: 2))

This chapter in the manual should be helpful:
https://www.gnu.org/software/kawa/Application-and-Arguments-Lists.html

--
        --Per Bothner
[hidden email]   http://per.bothner.com/
Reply | Threaded
Open this post in threaded view
|

Re: Using APPLY with functions with #!key arguments

Duncan Mak
Thanks Per! That worked!

On Wed, Dec 27, 2017 at 9:48 PM, Per Bothner <[hidden email]> wrote:

> On 12/27/2017 05:28 PM, Duncan Mak wrote:
>>
>> I think this used to work in older Kawa releases, but how do I use
>> APPLY to invoke a function like this in Kawa 3.0?
>>
>> #|kawa:1|# (define (foo x #!key y) (list x y))
>
>
> You can do this:
>
> (apply foo (arglist 1 y: 2))
>
> which is the same as:
>
> (foo @:(arglist 1 y: 2))
>
> This chapter in the manual should be helpful:
> https://www.gnu.org/software/kawa/Application-and-Arguments-Lists.html
>
> --
>         --Per Bothner
> [hidden email]   http://per.bothner.com/



--
Duncan.