# croma v0.13.0 - Table of Contents > Elixir macro utilities to make type-based programming easier ## Modules - [Croma](Croma.md): Utility module to `import` croma macros. - [Croma.Any](Croma.Any.md): Module that represents any Elixir term. - [Croma.Atom](Croma.Atom.md): Module that represents the Elixir's built-in atom type. Intended to be used with other parts of croma to express atom variables. - [Croma.Binary](Croma.Binary.md): Module that represents the Elixir's built-in binary type. Intended to be used with other parts of croma to express binary variables. - [Croma.BitString](Croma.BitString.md): Module that represents the Elixir's built-in bitstring type. Intended to be used with other parts of croma to express bitstring variables. - [Croma.Boolean](Croma.Boolean.md): Module that represents the Elixir's built-in boolean type. Intended to be used with other parts of croma to express boolean variables. - [Croma.Byte](Croma.Byte.md): Module that represents the Elixir's built-in byte type. Intended to be used with other parts of croma to express byte variables. - [Croma.Char](Croma.Char.md): Module that represents the Elixir's built-in char type. Intended to be used with other parts of croma to express char variables. - [Croma.DebugAssert](Croma.DebugAssert.md) - [Croma.Defpt](Croma.Defpt.md): Module that provides `Croma.Defpt.defpt/2` macro. - [Croma.Defun](Croma.Defun.md): Module that provides `Croma.Defun.defun/2` macro. - [Croma.Float](Croma.Float.md): Module that represents the Elixir's built-in float type. Intended to be used with other parts of croma to express float variables. - [Croma.Function](Croma.Function.md): Module that represents the Elixir's built-in function type. Intended to be used with other parts of croma to express function variables. - [Croma.Guard](Croma.Guard.md): Module to work with guard generation (see `Croma.Defun.defun/2`). This module is intended for internal use. - [Croma.Integer](Croma.Integer.md): Module that represents the Elixir's built-in integer type. Intended to be used with other parts of croma to express integer variables. - [Croma.List](Croma.List.md): Module that represents the Elixir's built-in list type. Intended to be used with other parts of croma to express list variables. - [Croma.ListMonad](Croma.ListMonad.md): Implementation of `Croma.Monad` interface for built-in lists. - [Croma.Map](Croma.Map.md): Module that represents the Elixir's built-in map type. Intended to be used with other parts of croma to express map variables. - [Croma.Monad](Croma.Monad.md): This module defines an interface for [monad](https://en.wikipedia.org/wiki/Monad). - [Croma.NegInteger](Croma.NegInteger.md): Module that represents the Elixir's built-in neg_integer type. Intended to be used with other parts of croma to express neg_integer variables. - [Croma.NonNegInteger](Croma.NonNegInteger.md): Module that represents the Elixir's built-in non_neg_integer type. Intended to be used with other parts of croma to express non_neg_integer variables. - [Croma.Number](Croma.Number.md): Module that represents the Elixir's built-in number type. Intended to be used with other parts of croma to express number variables. - [Croma.Pid](Croma.Pid.md): Module that represents the Elixir's built-in pid type. Intended to be used with other parts of croma to express pid variables. - [Croma.Port](Croma.Port.md): Module that represents the Elixir's built-in port type. Intended to be used with other parts of croma to express port variables. - [Croma.PosInteger](Croma.PosInteger.md): Module that represents the Elixir's built-in pos_integer type. Intended to be used with other parts of croma to express pos_integer variables. - [Croma.Reference](Croma.Reference.md): Module that represents the Elixir's built-in reference type. Intended to be used with other parts of croma to express reference variables. - [Croma.Result](Croma.Result.md): A simple data structure to represent a result of computation that can either succeed or fail, in the form of `{:ok, any}` or `{:error, any}`. - [Croma.String](Croma.String.md): Module that represents the Elixir's built-in String.t type. Intended to be used with other parts of croma to express String.t variables. - [Croma.Struct](Croma.Struct.md): Module to define structs with validation and conversion functions, based on its type information. - [Croma.SubtypeOfAtom](Croma.SubtypeOfAtom.md): Helper module to define type whose members are a fixed set of atoms. The following members are generated by `use Croma.SubtypeOfAtom` - [Croma.SubtypeOfFloat](Croma.SubtypeOfFloat.md): Helper module to define float-based types. The following members are generated by `use Croma.SubtypeOfFloat` - [Croma.SubtypeOfFloatWithConversionFromInt](Croma.SubtypeOfFloatWithConversionFromInt.md): Helper module to define float-based types. The following members are generated by `use Croma.SubtypeOfFloatWithConversionFromInt` - [Croma.SubtypeOfInt](Croma.SubtypeOfInt.md): Helper module to define integer-based types. The following members are generated by `use Croma.SubtypeOfInt` - [Croma.SubtypeOfList](Croma.SubtypeOfList.md): Helper module to define list-based types. The following members are generated by `use Croma.SubtypeOfList` - [Croma.SubtypeOfMap](Croma.SubtypeOfMap.md): Helper module to define map-based types. The following members are generated by `use Croma.SubtypeOfMap` - [Croma.SubtypeOfNumber](Croma.SubtypeOfNumber.md): Helper module to define number-based (integer or float) types. The following members are generated by `use Croma.SubtypeOfNumber` - [Croma.SubtypeOfString](Croma.SubtypeOfString.md): Helper module to define string-based types. The following members are generated by `use Croma.SubtypeOfString` - [Croma.SubtypeOfTuple](Croma.SubtypeOfTuple.md): Helper module to define tuple-based types. The following members are generated by `use Croma.SubtypeOfTuple` - [Croma.TestCase](Croma.TestCase.md): Module to be `use`d by test modules to make tests a bit shorter. - [Croma.Tuple](Croma.Tuple.md): Module that represents the Elixir's built-in tuple type. Intended to be used with other parts of croma to express tuple variables. - [Croma.TypeGen](Croma.TypeGen.md): Module that defines macros for ad-hoc (in other words "in-line") module definitions. - [Croma.TypeUtil](Croma.TypeUtil.md): Utilities to work with internal representation of types. - [Croma.Validation](Croma.Validation.md): Module for code generation of argument validation (see `Croma.Defun.defun/2`). This module is intended for internal use. - Exceptions - [Croma.DebugAssertError](Croma.DebugAssertError.md) ## Mix Tasks - [mix compile.croma](Mix.Tasks.Compile.Croma.md): Custom compiler that checks if Croma consistently defines `new/1` functions.