Skip to content

Instantly share code, notes, and snippets.

@Jamil
Last active January 2, 2016 07:39
Show Gist options
  • Select an option

  • Save Jamil/8271701 to your computer and use it in GitHub Desktop.

Select an option

Save Jamil/8271701 to your computer and use it in GitHub Desktop.
Finding the antiderivative of a polynomial expression in Scheme
#lang scheme
(define (make-sum a1 a2)
(list '+ a1 a2))
(define (make-product m1 m2)
(list '* m1 m2))
(define (make-exponent e1 e2)
(list '** e1 e2))
(define (term-integrate expr)
(define (order term) (caddr (caddr term)))
(define (var term) (cadr (caddr term)))
(define (coeff term) (cadr term))
(cond ((eq? (length expr) 0))
(else (make-product
(/ (coeff expr) (+ (order expr) 1))
(make-exponent (var expr) (+ (order expr) 1))))))
(define (integrate expr)
(cond ((empty? expr) empty)
(else (cons
(term-integrate (car expr))
(integrate (cdr expr))))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment