diff --git a/typed-compose.rkt b/typed-compose.rkt index a5857a5..67bac2a 100644 --- a/typed-compose.rkt +++ b/typed-compose.rkt @@ -22,3 +22,12 @@ (module+ test (require typed/rackunit)) + +(: compose-n (All (a) (-> (-> a a) * (-> a a)))) +(define (compose-n . funcs) + (λ (x) + (for/foldr ([x x]) ([f funcs]) + (f x)))) + +(module+ test + (check-equal? ((compose-n add1 add1 add1) 3) 6))