Skip to content

Instantly share code, notes, and snippets.

@pjazdzewski1990
Created February 25, 2016 09:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pjazdzewski1990/aa665c41d8cde5fb0e16 to your computer and use it in GitHub Desktop.
Save pjazdzewski1990/aa665c41d8cde5fb0e16 to your computer and use it in GitHub Desktop.
def derivativeImpl(c: blackbox.Context)(f: c.Expr[Double => Double]): c.Expr[Double => Double] = {
import c.universe._
val Function(List(ValDef(_, name, _, _)), funcBody) = f.tree
val components = extractComponents(funcBody)(c)
val transformedComponents =
components.map(_.derive.toTree(c)).reduce((a, b) => q"$a + $b")
c.Expr(q"($name: Double) => $transformedComponents")
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment