mod alias;
mod apply;
mod atom;
mod function;
mod generic;
mod pair;
mod structs;
mod unions;
pub use alias::*;
pub use apply::*;
pub use atom::*;
pub use function::*;
pub use generic::*;
pub use pair::*;
pub use structs::*;
pub use unions::*;
use id_arena::Id;
pub type TypeId = Id<Type>;
#[derive(Debug, Clone)]
pub enum Type {
Unresolved,
Generic(Generic),
Any,
Never,
Ref(TypeId),
Atom(Atom),
Pair(Pair),
Alias(Alias),
Struct(Struct),
Function(FunctionType),
Apply(Apply),
Union(Union),
}