mirror of
https://github.com/justinethier/cyclone.git
synced 2025-05-23 20:15:05 +02:00
Optimize certain assoc and member function calls
This commit is contained in:
parent
b8bcdb89dc
commit
fb54796d53
1 changed files with 15 additions and 1 deletions
|
@ -1088,7 +1088,21 @@
|
|||
(append a-lookup defines-a-lookup renamed))
|
||||
(map (lambda (p) (cdr p)) defines-a-lookup)))))
|
||||
((app? ast)
|
||||
(map (lambda (a) (convert a renamed)) ast))
|
||||
(cond
|
||||
;; Special case, convert these to primitives if possible
|
||||
((and (eq? (car ast) 'member)
|
||||
(not (assoc (car ast) renamed))
|
||||
(= (length ast) 3))
|
||||
(cons 'Cyc-fast-member
|
||||
(map (lambda (a) (convert a renamed)) (cdr ast))))
|
||||
((and (eq? (car ast) 'assoc)
|
||||
(not (assoc (car ast) renamed))
|
||||
(= (length ast) 3))
|
||||
(cons 'Cyc-fast-assoc
|
||||
(map (lambda (a) (convert a renamed)) (cdr ast))))
|
||||
;; Regular case, alpha convert everything
|
||||
(else
|
||||
(map (lambda (a) (convert a renamed)) ast))))
|
||||
(else
|
||||
(error "unhandled expression: " ast))))
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue