#lang typed/scheme (provide (all-defined-out)) (: cast (All (T) ((Any -> Boolean : T) Any -> T))) (define (cast p? x) (if (p? x) x (error "Cast failed")))