#lang racket (provide (all-defined-out)) (define-syntax-rule (define/memo (f args ...) body) (begin (define cache (make-hash)) (define (f args ...) (hash-ref! cache (list args ...) (λ () body)))))