[racket-dev] Proposed addition of #:where clause to the match library
Hi Michael,
On 2014-10-24 17:55:24 +0000, Michael Bernstein wrote:
> Proposed Racket version (based on the Erlang example)
> uses #:where keyword:
> (define/match (insert X lst)
> [{ X '() } (list X)]
> [{ X (cons H T) } #:where (<= X H) (list* X H T)]
> [{ X (cons H T) } (cons H (insert X T))])
> (define (insertion-sort lst)
> (foldl insert '() lst))
You can write this as:
(define/match (insert X lst)
[{ X '() } (list X)]
[{ X (cons H T) } #:when (<= X H) (list* X H T)]
[{ X (cons H T) } (cons H (insert X T))])
(define (insertion-sort lst)
(foldl insert '() lst))
Note that #:where is replaced by #:when. I believe this works in Racket
v6.0 and later.
Cheers,
Asumu