Skip to content

Instantly share code, notes, and snippets.

@aamedina
Created March 26, 2017 13:52
Show Gist options
  • Select an option

  • Save aamedina/361daea7917797e40439232fb75ea119 to your computer and use it in GitHub Desktop.

Select an option

Save aamedina/361daea7917797e40439232fb75ea119 to your computer and use it in GitHub Desktop.
(defvar *local-type-declarations* '())
(defmacro local-type-declare (declarations &body forms)
`(compiler-let ((*local-type-declarations*
(append ',declarations *local-type-declarations*)))
,@forms))
(defmacro typed-var (var)
(let ((type (assoc var *local-type-declarations*)))
(if type `(the ,(cadr type) ,var) var)))
(defun f (x y)
(local-type-declare ((x fixnum) (y float))
(+ (typed-var x) (typed-var y))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment