Archive for the ‘Programming’ Category
Fun with lisp
Niall and I were recently looking at support for functions that return functions in different languages (our test being a function that takes a function and returns the derivative function).
Here is the python he was talking about (not using lambda would make it a lot more readable):
def D(f): return lambda x: (f(x+0.0004)-f(x))/0.0004D(lambda x: x**2)(3)
Since I’ve been learning lisp recently, from Graham’s ‘ANSI Common Lisp’, I decided to have a go at it in Lisp too. Currently I don’t know of any way to avoid using funcall.
(defun D(f) #'(lambda(x) (/(- (funcall f (+ x 0.0001)) (funcall f x) ) 0.0001) ) )(funcall (D (lambda(y) (* y y))) 3)
Update: I only noticed the section on closures in the book 2 days after spending time doing this. D’oh.