60 lines
1.0 KiB
Racket
60 lines
1.0 KiB
Racket
#lang racket/base
|
|
(require racket/contract)
|
|
|
|
(->i (#:kwd1 [x number?]
|
|
#:kwd2 [y number?])
|
|
#:rest [x any/c]
|
|
any)
|
|
;=> duplicate identifier 'x'
|
|
|
|
|
|
#|
|
|
test cases:
|
|
|
|
(->i (#:kwd1 [x number?]
|
|
#:kwd2 [x number?])
|
|
(values [y number?]
|
|
[z number?]))
|
|
=> duplicate identifier 'x'
|
|
|
|
|
|
(->i (#:kwd1 [w number?]
|
|
#:kwd1 [x number?])
|
|
(values [y number?]
|
|
[z number?]))
|
|
=> duplicate keyword
|
|
|
|
|
|
(->i (#:kwd1 [w number?]
|
|
#:kwd2 [x number?])
|
|
(values [y number?]
|
|
[w number?]))
|
|
=> duplicate variable 'w'
|
|
|
|
|
|
(->i (#:kwd1 [w number?]
|
|
#:kwd2 [x number?])
|
|
(values [y number?]
|
|
[y number?]))
|
|
=> duplicate variable 'y'
|
|
|
|
|
|
(->i (#:kwd1 [w number?]
|
|
#:kwd2 [x number?])
|
|
(values [y number?]
|
|
[w number?]))
|
|
=> duplicate identifier 'w'
|
|
|
|
(let ([values (λ (x) x)])
|
|
(->i (#:kwd1 [w number?]
|
|
#:kwd2 [x number?])
|
|
(values number?)))
|
|
;=> no error(?)
|
|
|
|
(->i (#:kwd1 [x number?]
|
|
#:kwd2 [y number?])
|
|
[x number?])
|
|
;=> duplicate identifier 'x'
|
|
|
|
|#
|