The module Catlab.Programs
provides domain-specific languages (DSLs) for
constructing diagrams of various kinds. The DSLs, implemented as Julia macros,
are based on the syntax of the Julia language but often interpret that syntax
very differently from standard Julia programs. Conversely, this module offers
preliminary support for generating Julia code from wiring diagrams.
There are two major macros for constructing wiring diagrams:
In addition, there is a family of related macros for constructing category-theoretic diagrams:
@graph
, for constructing a graph@fincat
, for presenting a category as a graph together with path equations@finfunctor
, for defining a functor between two finitely presented categories@diagram
and@free_diagram
, for defining a diagram in a category
Generalizing the last two macros, the modules provides DSLs for functorial data migration:
@migrate
, for migrating data between acsets@migration
, for defining data migrations between schemas
Modules = [
Programs.GenerateJuliaPrograms,
Programs.ParseJuliaPrograms,
Programs.RelationalPrograms,
Programs.DiagrammaticPrograms,
]
Private = false