(import (chicken type)) (define-syntax define-type-pattern (syntax-rules () ((define-type-pattern (type-name pattern ...) type-expression) (define-syntax type-name (syntax-rules () ((type-name pattern ...) type-expression)))))) (define-type-pattern (alist-type key-type value-type) (list-of (pair key-type value-type))) (let ((some-alist (the (alist-type symbol number) '()))) (print some-alist))