Scheme datum implementation types (for Erlang types and specs)
. __Authors:__ Joseph Wayne Norton ([`[email protected]`](mailto:[email protected])).
bytes() = <<_:_*8>>
0..255
integer_non_zero() = neg_integer() | pos_integer()
lineno() = non_neg_integer()
s_any(T) = s_boolean() | s_number() | s_character() | s_string() | s_symbol() | s_bytevector() | s_list(T) | s_list_nonempty(T) | s_pair(T) | s_vector(T) | s_label(T) | s_labelref()
s_boolean() = #boolean{val = t_boolean()}
s_bytevector() = #bytevector{val = t_bytevector()}
s_character() = #character{val = t_character()}
s_complex() = s_rectangular() | s_polar() | s_real()
s_denominator() = s_integer_exact_pos()
s_false() = #boolean{val = t_false()}
s_finite() = s_finite_inexact() | s_finite_exact()
s_finite_exact() = s_rational() | s_integer_exact()
s_finite_inexact() = s_negzero() | float() | s_integer_inexact()
s_identifier() = t_identifier()
s_infnan() = '?PINF' | '?NINF' | '?PNAN' | '?NNAN'
s_integer() = s_integer_inexact() | s_integer_exact()
s_integer_exact() = integer()
s_integer_exact_neg() = neg_integer()
s_integer_exact_non_neg() = non_neg_integer()
s_integer_exact_non_zero() = integer_non_zero()
s_integer_exact_pos() = pos_integer()
s_integer_inexact() = float()
trunc(float()) == float()
s_label(T) = #label{val = t_label(T)}
s_labelref() = #labelref{val = t_labelref()}
s_letter() = #character{val = t_letter()}
s_list(T) = t_list(T)
s_list_nonempty(T) = t_list_nonempty(T)
s_negzero() = '?NZER'
s_number() = s_complex()
s_numerator() = s_integer()
s_pair(T) = t_pair(T)
s_polar() = {polar, {Mag::s_real(), Ang::s_rational()}}
s_rational() = {s_numerator(), s_denominator()}
s_real() = s_infnan() | s_finite()
s_string() = #string{val = t_string()}
s_symbol() = t_symbol()
s_true() = #boolean{val = t_true()}
s_vector(T) = #vector{val = t_vector(T)}
t_boolean() = boolean()
t_bytevector() = bytes()
t_character() = unichar()
t_false() = false
t_identifier() = atom() | {atom(), utf8()} | #mid{val = t_symbol()}
atom(utf-8()) | {atom(sha(utf-8())), utf-8()} | #mid{}
t_label(T) = {non_neg_integer(), T}
t_labelref() = non_neg_integer()
t_letter() = 65..90 | 97..122
t_list(T) = maybe_improper_list(T, T | [])
t_list_nonempty(T) = nonempty_maybe_improper_list(T, T | [])
t_pair(T) = nonempty_maybe_improper_list(T, T)
t_string() = {unichar()}
t_symbol() = t_identifier() | t_variable()
t_true() = true
t_variable() = reference() | {reference(), t_symbol()}
t_vector(T) = {T}
tuple of any size
unichar() = unichar_low() | unichar_high()
unicode "code point"
unichar_high() = 57344..1114111
unichar_low() = 0..55295
utf8() = <<_:_*8>>
utf-8