Skip to content

Instantly share code, notes, and snippets.

@dannypsnl
Created November 22, 2024 17:48
Show Gist options
  • Select an option

  • Save dannypsnl/d1446bfb3e30a1dda5e12a6d1b6d2ebd to your computer and use it in GitHub Desktop.

Select an option

Save dannypsnl/d1446bfb3e30a1dda5e12a6d1b6d2ebd to your computer and use it in GitHub Desktop.

Revisions

  1. dannypsnl created this gist Nov 22, 2024.
    15 changes: 15 additions & 0 deletions symbolic-differential.rkt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,15 @@
    #lang racket

    (define (d form)
    (match form
    [`(+ ,f ,g) `(+ ,(d f) ,(d g))]
    [`(* ,f ,g) `(+ (* ,(d f) ,g) (* ,f ,(d g)))]
    [`(∘ ,f ,g) `(* (∘ ,(d f) ,g) ,(d g))]
    [`(d ,n ,o) `(d ,(add1 n) ,o)]
    [o `(d 1 ,o)]))

    (define target '(∘ f g))
    (d target)
    (d (d target))
    (d (d (d target)))
    (d (d (d (d target))))