From e3ff45b08ee206f5b1b40a6315e009911826a20d Mon Sep 17 00:00:00 2001 From: Tony Garnock-Jones Date: Tue, 17 May 2016 01:11:00 -0400 Subject: [PATCH] Fix wildcard matcing in trie-lookup to properly prepend wilds for open-parens. --- racket/syndicate/trie.rkt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/racket/syndicate/trie.rkt b/racket/syndicate/trie.rkt index faa8ff4..2d1e12f 100644 --- a/racket/syndicate/trie.rkt +++ b/racket/syndicate/trie.rkt @@ -560,8 +560,9 @@ [(cons (== ?) vs1) (when (not wildcard-union) (error 'trie-lookup "Cannot match wildcard as a value")) (let* ((seed (walk vs1 w)) - (seed (for/fold [(seed seed)] [(k (in-list (treap-values os)))] - (wildcard-union seed (walk vs1 k)))) + (seed (for/fold [(seed seed)] [(entry (in-list (treap-to-alist os)))] + (match-define (cons (open-parenthesis arity _) k) entry) + (wildcard-union seed (walk (append (make-list arity ?) vs1) k)))) (seed (for/fold [(seed seed)] [(k (in-list (treap-values h)))] (wildcard-union seed (walk vs1 k))))) seed)]