Racket modification of Kevin Baeson's 99 line C++ path tracer
Note: I deliberately chose for the same software design for all programming languages out of clarity and performance reasons (this can conflict with the nature of declarative/functional programming languages).