On this page:
2.1 keyword-apply/  sort
keyword-apply/  sort
2.2 kw-lists-lambda
kw-lists-lambda
kw-lists-case-lambda
2.3 keyword-lambda
keyword-lambda
8.12

2 Keywords in Parallel Lists🔗ℹ

2.1 keyword-apply/sort🔗ℹ

 (require kw-utils/keyword-apply-sort) package: kw-utils

procedure

(keyword-apply/sort f    
  kws    
  kw-args    
  v ...    
  lst    
  #:<kw> kw-arg ...)  any
  f : procedure?
  kws : (listof keyword?)
  kw-args : list?
  v : any/c
  lst : list?
  kw-arg : any/c
like keyword-apply, but without the constraint that the keywords in kws must be sorted.

Examples:
> (require kw-utils/keyword-apply-sort racket/math)
> (define (kinetic-energy #:mass m #:velocity v)
    (* 1/2 m (sqr v)))
> (keyword-apply/sort kinetic-energy '(#:mass #:velocity) '(2 1) '())

1

> (keyword-apply/sort kinetic-energy '(#:velocity #:mass) '(1 2) '())

1

2.2 kw-lists-lambda🔗ℹ

 (require kw-utils/kw-lists-lambda) package: kw-utils

syntax

(kw-lists-lambda kws kw-args args body ...)

 
args = (arg ...)
  | (arg ... . rest-id)
  | rest-id
     
arg = arg-id
  | [arg-id default-expr]
roughly equivalent to
(make-keyword-procedure
 (lambda (kws kw-args . args) body ...))

Examples:
> (require kw-utils/kw-lists-lambda)
> (define proc
    (kw-lists-lambda kws kw-args rest-args
      (list kws kw-args rest-args)))
> (proc #:a 'a #:b 'b 0 1 2)

'((#:a #:b) (a b) (0 1 2))

syntax

(kw-lists-case-lambda kws kw-args [args body ...] ...)

 
args = (arg-id ...)
  | (arg-id ... . rest-id)
  | rest-id
roughly equivalent to
(make-keyword-procedure
 (case-lambda [(kws kw-args . args) body ...] ...))

Examples:
> (require kw-utils/kw-lists-lambda)
> (define proc
    (kw-lists-case-lambda kws kw-args
      [(a)
       (list kws kw-args a)]
      [(a b)
       (list kws kw-args a b)]))
> (proc #:a 'a #:b 'b 0)

'((#:a #:b) (a b) 0)

> (proc #:a 'a #:b 'b 0 1)

'((#:a #:b) (a b) 0 1)

2.3 keyword-lambda🔗ℹ

 (require kw-utils/keyword-lambda) package: kw-utils

syntax

(keyword-lambda (kws kw-args . rest-args) body ...)

roughly equivalent to
(make-keyword-procedure
 (lambda (kws kw-args . rest-args) body ...))

Examples:
> (require kw-utils/keyword-lambda)
> (define proc
    (keyword-lambda (kws kw-args . rest-args)
      (list kws kw-args rest-args)))
> (proc #:a 'a #:b 'b 0 1 2)

'((#:a #:b) (a b) (0 1 2))