Skip to content

Instantly share code, notes, and snippets.

@3tty0n
Created August 21, 2021 16:17
Show Gist options
  • Select an option

  • Save 3tty0n/95dd4faf7b23a60d008b9478dcdae830 to your computer and use it in GitHub Desktop.

Select an option

Save 3tty0n/95dd4faf7b23a60d008b9478dcdae830 to your computer and use it in GitHub Desktop.
#lang racket
(define (trampoline fn . args)
(if (empty? args)
(let ([ret (fn)])
(if (procedure? ret)
(trampoline ret)
ret))
(trampoline (lambda () (apply fn args)))))
(define (fact* n k)
(if (< n 2)
(k n)
(lambda () (fact* (- n 1) (lambda (v) (k (* n v)))))))
(trampoline fact* 100 (lambda (x) x))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment