#lang scheme/load (module before typed/scheme (provide (all-defined-out)) (define-struct: Sigil ()) (: list->english ((Listof String) -> String)) (define (list->english strs) (error 'fail)) (define-type-alias (Set X) (HashTable X '())) (: empty-set (All (T) (-> (Set T)))) (define (empty-set) (error 'fail)) (: set->list (All (T) ((Set T) -> (Listof T)))) (define (set->list set) (error 'fail)) ) (module after typed/scheme (require 'before) (: f ((Set Sigil) -> Any)) (define (f x1) (let* ([x2 (set->list x1)]) (list->english x2) (error 'NO! "Way!"))))