Skip to content

Commit

Permalink
Code redux.
Browse files Browse the repository at this point in the history
  • Loading branch information
Sven Michael Klose committed Dec 25, 2016
1 parent 3930590 commit be03044
Showing 1 changed file with 6 additions and 5 deletions.
11 changes: 6 additions & 5 deletions environment/transpiler/front-end/rename-arguments.lisp
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
; tré – Copyright (c) 2005–2015 Sven Michael Klose <pixel@hugbox.org>
; tré – Copyright (c) 2005–2016 Sven Michael Klose <pixel@hugbox.org>

(define-gensym-generator argument-sym a)

(defun list-aliases (x &key (gensym-generator #'gensym))
(defun list-aliases (x)
(when x
(. (. x. (funcall gensym-generator))
(. (. x. (argument-sym))
(list-aliases .x))))

(defun rename-argument (replacements x)
(| (assoc-value x replacements :test #'eq) x))
(| (assoc-value x replacements :test #'eq)
x))

(defun rename-arguments-lambda (replacements x)
(? (get-lambda-funinfo x)
x
(alet (+ (list-aliases (expanded-lambda-args x) :gensym-generator #'argument-sym) replacements)
(alet (+ (list-aliases (expanded-lambda-args x)) replacements)
(copy-lambda x :args (rename-arguments-0 ! (lambda-args x))
:body (rename-arguments-0 ! (lambda-body x))))))

Expand Down

0 comments on commit be03044

Please sign in to comment.