sigildocs

(sigil spec)

(sigil spec) - Procedure Specification Utilities

Provides utilities for working with procedure specs — machine-readable predicate-based annotations on procedures.

(import (sigil spec))

(define (add a b)
  (: number? number? -> number?)
  (+ a b))

(spec->string (procedure-spec add))  ; => "number? number? -> number?"

Exports

spec->stringprocedure

Format a spec list as a readable string.

Converts a spec list (as returned by procedure-spec) into a human-readable string representation.

(spec->string '(number? number? -> number?))  ; => "number? number? -> number?"
(spec->string '(string? (end: integer?) -> string?))
; => "string? (end: integer?) -> string?"
void?procedure

Test if a value is void (the undefined value).

Returns #t if x is the void/undefined value (produced by (if #f #f)).

(void? (if #f #f))  ; => #t
(void? 42)          ; => #f
any?procedure

Always-true predicate for "any type" in specs.

Re-exported from (sigil core)

any-ofprocedure

Return a predicate accepting values satisfying any of the given predicates.

((any-of string? number?) "hi")   ; => #t
((any-of string? number?) 42)     ; => #t
((any-of string? number?) #t)     ; => #f

Re-exported from (sigil core)

none-ofprocedure

Return a predicate rejecting values that satisfy any of the given predicates.

((none-of string? number?) #t)     ; => #t
((none-of string? number?) "hi")   ; => #f
((none-of string? number?) 42)     ; => #f

Re-exported from (sigil core)

maybeprocedure

Return a predicate accepting #f or values satisfying pred.

((maybe string?) "hi")   ; => #t
((maybe string?) #f)     ; => #t
((maybe string?) 42)     ; => #f

Re-exported from (sigil core)

list-ofprocedure

Return a predicate accepting lists where every element satisfies pred.

((list-of number?) '(1 2 3))    ; => #t
((list-of number?) '(1 "a" 3))  ; => #f
((list-of number?) '())         ; => #t

Re-exported from (sigil core)