Skip to content

Latest commit

 

History

History
40 lines (31 loc) · 1.41 KB

programs.md

File metadata and controls

40 lines (31 loc) · 1.41 KB

[Programs](@id programs)

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:

  • @program, for directed wiring diagrams (DWDs)
  • @relation, for undirected wiring diagrams (UWDs)

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

API

Modules = [
  Programs.GenerateJuliaPrograms,
  Programs.ParseJuliaPrograms,
  Programs.RelationalPrograms,
  Programs.DiagrammaticPrograms,
]
Private = false