Add and use deftype and defpolytype.

This commit is contained in:
Sergiu Ivanov 2022-04-29 16:32:22 +02:00
parent e867a86d4d
commit bed1ed24f3
3 changed files with 23 additions and 8 deletions

View file

@ -13,6 +13,9 @@
@(define-syntax-rule (ex . args) @(define-syntax-rule (ex . args)
(examples #:eval functions-evaluator . args)) (examples #:eval functions-evaluator . args))
@(define-syntax-rule (deftype . args)
(defidform #:kind "type" . args))
@title[#:tag "functions"]{dds/functions: Formal Functions} @title[#:tag "functions"]{dds/functions: Formal Functions}
@defmodule[dds/functions] @defmodule[dds/functions]
@ -457,7 +460,7 @@ Instances of @racket[tbf] have the type @racket[TBF].
} }
@defidform[#:kind "type" TBF]{ @deftype[TBF]{
The type of the instances of @racket[tbf]: The type of the instances of @racket[tbf]:

View file

@ -16,6 +16,12 @@
@(define-syntax-rule (ex . args) @(define-syntax-rule (ex . args)
(examples #:eval networks-evaluator . args)) (examples #:eval networks-evaluator . args))
@(define-syntax-rule (defpolytype . args)
(defform #:kind "polymorphic type" . args))
@(define-syntax-rule (deftype . args)
(defidform #:kind "type" . args))
@title[#:tag "networks"]{dds/networks: Formal Dynamical Networks} @title[#:tag "networks"]{dds/networks: Formal Dynamical Networks}
@defmodule[(submod dds/networks typed)] @defmodule[(submod dds/networks typed)]
@ -27,21 +33,21 @@ This model can generalise Boolean networks, TBANs, multivalued networks, etc.
@section[#:tag "networks-basics"]{Basic types} @section[#:tag "networks-basics"]{Basic types}
@defform[#:kind "type" (State a)]{ @defpolytype[(State a)]{
An immutable mapping (a hash table) assigning elements of type @racket[a] to An immutable mapping (a hash table) assigning elements of type @racket[a] to
the variables. A synonym of @racket[VariableMapping]. the variables. A synonym of @racket[VariableMapping].
} }
@defform[#:kind "type" (UpdateFunction a)]{ @defpolytype[(UpdateFunction a)]{
An update function is a function computing a value from the given An update function is a function computing a value from the given
state. This is a synonym of the type @racket[(-> (State a) a)]. state. This is a synonym of the type @racket[(-> (State a) a)].
} }
@defform[#:kind "type" (Domain a)]{ @defpolytype[(Domain a)]{
A domain which is a subset of the type @racket[a]. A domain which is a subset of the type @racket[a].
@ -49,7 +55,7 @@ A domain which is a subset of the type @racket[a].
} }
@defform[#:kind "type" (DomainMapping a)]{ @defpolytype[(DomainMapping a)]{
A domain mapping is a hash table mapping variables to the lists of values in A domain mapping is a hash table mapping variables to the lists of values in
their domains. their domains.
@ -66,7 +72,7 @@ Instances of @racket[network] have the type @racket[Network].
} }
@defidform[#:kind "type" Network]{ @deftype[Network]{
The type of the instances of @racket[Network]. The type of the instances of @racket[Network].

View file

@ -15,6 +15,12 @@
@(define-syntax-rule (ex . args) @(define-syntax-rule (ex . args)
(examples #:eval utils-evaluator . args)) (examples #:eval utils-evaluator . args))
@(define-syntax-rule (defpolytype . args)
(defform #:kind "type" . args))
@(define-syntax-rule (deftype . args)
(defidform #:kind "polymorphic type" . args))
@title[#:tag "utils"]{dds/utils: Various Utilities} @title[#:tag "utils"]{dds/utils: Various Utilities}
@defmodule[dds/utils] @defmodule[dds/utils]
@ -25,13 +31,13 @@ the package: evaluating sexps, manipulating lists,
@section{Base types} @section{Base types}
@defidform[#:kind "type" Variable]{ @deftype[Variable]{
Any Racket symbol. Designates a variable in a discrete dynamical network. Any Racket symbol. Designates a variable in a discrete dynamical network.
} }
@defform[#:kind "type" (VariableMapping A)]{ @defpolytype[(VariableMapping A)]{
An immutable mapping (a hash table) assigning elements of type @racket[A] to An immutable mapping (a hash table) assigning elements of type @racket[A] to
the variables. the variables.