#lang mzscheme
(require scheme/contract)
(require (file "base.ss"))
(define (symbol-or-false? value)
(or (symbol? value)
(eq? value #f)))
(define (string-or-false? value)
(or (string? value)
(eq? value #f)))
(define (number-or-false? value)
(or (number? value)
(eq? value #f)))
(define (integer-or-false? value)
(or (integer? value)
(eq? value #f)))
(define (arity/c num-args)
(lambda (proc)
(and (procedure? proc)
(procedure-arity-includes? proc num-args))))
(provide symbol-or-false?
string-or-false?
number-or-false?
integer-or-false?
arity/c)