# Reference

min includes a small but powerful standard library organized into the following *modules*:

`lang`

Module- Defines the basic language constructs, such as control flow, type conversions, symbol definition and binding, exception handling, etc.
`stack`

Module- Defines combinators and stack-shufflers like dip, dup, swap, cons, etc.
`seq`

Module- Defines operators for quotations and dictionaries, like map, filter, reduce, etc.
`io`

Module- Provides operators for reading and writing files as well as printing to STDOUT and reading from STDIN.
`fs`

Module- Provides operators for accessing file information and properties.
`logic`

Module- Provides comparison operators for all min data types and other boolean logic operators.
`str`

Module- Provides operators to perform operations on strings, use regular expressions, interpolation, etc..
`sys`

Module- Provides operators to use as basic shell commands, access environment variables, and execute external commands.
`num`

Module- Provides operators to perform simple mathematical operations on integer and floating point numbers.
`time`

Module- Provides a few basic operators to manage dates, times, and timestamps.
`crypto`

Module- Provides operators to compute hashes (MD5, SHA1, SHA224, SHA256, SHA384, sha512), base64 encoding/decoding, and AES encryption/decryption.
`math`

Module- Provides many mathematical operators and constants such as trigonometric functions, square root, logarithms, etc.

## Notation

The following notation is used in the signature of all min operators:

### Types and Values

- ∅
- No value.
- a
- A value of any type.
- bool
- A boolean value
- int
- An integer value.
- float
- A float value.
- num
- A numeric (integer or float) value.
- string
- A string value.
- 'sym
- A string-like value (string or quoted symbol).
- quot
- A quotation (also expressed as parenthesis enclosing other values).
- dict
- A dictionary value.
- tinfo
- A timeinfo dictionary:
`( (“year” 2017) (“month” 7) (“day” 8) (“weekday” 6) (“yearday” 188) (“hour” 15) (“minute” 16) (“second” 25) (“dst” true) (“timezone” -3600) )`

- err
- An error dictionary:
`( (“error” “MyError”) (“message” “An error occurred”) (“symbol” “symbol1”) (“filename” “dir1/file1.min”) (“line” 3) (“column” 13) )`

- true
- true (boolean type).
- false
- false (boolean type)

### Suffixes

The following suffixes can be placed at the end of a value or type to indicate ordering or quantities.

_{1}- The first value of the specified type.
_{2}- The second value of the specified type.
_{3}- The third value of the specified type.
_{4}- The fourth value of the specified type.
_{?}- Zero or one.
_{*}- Zero or more.
_{+}- One or more