﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc	difficulty
1465	get-keyword fails to operate correctly if keywords in first and second arguments come from different environments	jrobbins		"Run the following code in csi, and you'll get a failed assertion:

{{{
(define-syntax keyword-from-syntax (syntax-rules () ((_) #:k)))
(assert (get-keyword (keyword-from-syntax) '(h i j #:k l)))
}}}

This should return {{{l}}}, but instead it returns {{{#f}}}. The bug occurs when a keywords from different environments are compared; the {{{#:k}}} from the syntax-rules is not being treated as equal to the {{{#:k}}} from the normal code for some reason.

A working replacement (and the replacement I use in my code) could be as follows:

{{{
(define (get-keyword kw args . default)
  (let (
    (tail (memq kw args))
  )
    (if (and tail (not (null? (cdr tail))))
      (cadr tail)
      (if (null? default)
        #f
        ((car default))
      )
    )
  )
)
}}}"	defect	new	major	someday	core libraries	4.13.0				trivial
