Module fungi_lang::ast [] [src]

Syntax: abstract (via Rust datatypes) and concrete (via Rust macros).

Program terms:
- Expressions (e): concrete, abstract.
- Values (v): concrete, abstract.

Types and effects:
- Value types (A,B): concrete, abstract.
- Computation types (C,D): concrete, abstract.
- Effect types (E): concrete, abstract.
- Effects (ε): concrete, abstract.
- Kinds (K): concrete, abstract.

Index terms, name terms, sorts:
- Name literals (n): concrete, abstract.
- Name terms (N,M): concrete, abstract.
- Index terms (i,j,X,Y,Z): concrete, abstract.
- Propositions (P): concrete, abstract.
- Sorts (g): concrete, abstract.

Structs

HostEvalFn
Module

Each module consists of a declaration list body

UseAllModule

Declaration that uses (imports) all decls from another module

Enums

CEffect

Computation effects

CType

Computation types

Decls

Declaration lists; the body of each module

Effect

Effects

Exp

Expressions (aka, computation terms)

IdxTm

Index terms

Kind

Kinds (classify types)

Name

Name Literals

NameTm

Name Terms

PrimApp

Expressions (aka, computation terms)

Prop

Propositions about name and index terms

Sort

Sorts (classify name and index terms)

Type

Value types

TypeCons

Type constructors

Val

Value terms

Type Definitions

CEffectRec
DeclsRec
EffectRec
ExpRec
IdxTmRec
KindRec
NameRec
NameTmRec
PropRec
SortRec
TypeRec
ValRec
Var