# 11. Field Syntax Reference¶

## 11.1. Notation¶

Field syntax is described as they are in the latest cabal file format version.

• terminals are enclosed in quotes and type set in typewriter script:

$\mathord{"}\mathtt{example}\mathord{"}$
• non-terminals are type set in italic:

$\mathit{version\text-range}$
• character sets are type set resembling regular expression notation:

$[ \mathord{"}\mathtt{1}\mathord{"} \cdots \mathord{"}\mathtt{9}\mathord{"} ]$

Character set complements have $$c$$ superscript:

$[ \mathord{"}\mathtt{1}\mathord{"} \cdots \mathord{"}\mathtt{9}\mathord{"} ]^c$
• repetition is type set using regular expression inspired notation. Superscripts tell how many time to repeat: The generic notation is $$\in[n\ldots5]$$, however there are common shorthands: $$\ast$$ for $$\in[0\ldots\infty]$$ (many), $$+$$ for $$\in[1\ldots\infty]$$ (some), $$?$$ for $$\in[0\ldots1]$$ (optional).

Subscripts tell the used separator:

$\mathit{digit}^+_{\mathord{"}\mathtt{.}\mathord{"}}$

Would be digit(\.digit)* in common regex syntax.

• alternatives are listed in braces separated by vertical bar:

$\{ \mathit{foo} \mid \mathit{bar} \}$

In case of multiple alternatives, the stacked notation is used

$\begin{split}\left\{\begin{gathered} \mathit{one} \\ \mathit{two} \\ \mathit{three} \\ \mathit{four} \\ \mathit{five} \end{gathered}\right\}\end{split}$
• parenthesis are used only for grouping:

$\left(\mathit{foo} \mid \mathit{bar}\right)^+$
• any amount of spaces, and at least single space are type set using $$\circ$$ and $$\bullet$$ respectively. They may appear standalone, not only as binary operators.

$\mathit{module} \bullet \mathord{}\mathtt{as}\mathord{"} \bullet \mathit{module}$
• While notation is heavily regular expression inspired, there are also fixed points, which allow represent recursive grammars

$\mathbf{fix}\; \mathit{expr}\; \mathbf{in}\; \mathit{digit} \mid \mathit{expr} \circ \mathord{}\mathtt{+}\mathord{"} \circ \mathit{expr} \mid \mathord{}\mathtt{(} \mathord{"} \circ \mathit{expr} \circ \mathord{}\mathtt{)}\mathord{"}$

## 11.2. Lists¶

Many fields in cabal file format are lists. There are three variations:

Space separated

Are used for lists of things with simple grammars, for example ghc-options

${\mathop{\mathit{element}}}^\ast_{\bullet}$
Comma separated

Are used for lists of things with complicated grammars, for example build-depends There can be leading or trailing comma (but not both) since cabal-version: 2.2. Note, the comma cannot exist alone.

$\mathrm{commalist}(\mathit{element}) = \left\{ {\mathop{\mathit{element}}}^\ast_{\left(\circ\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}\circ\right)}\mid\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}\circ{\mathop{\mathit{element}}}^+_{\left(\circ\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}\circ\right)}\mid{\mathop{\mathit{element}}}^+_{\left(\circ\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}\circ\right)}\circ\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}} \right\}$
Optional comma separated

Surprisingly many fields can have optional comma separator. Since cabal-version: 3.0 comma usage have to be consistent, in other words either used everywhere or nowhere. It’s recommended to avoid using comma in these fields, an example field is default-extensions.

$\begin{split}\mathrm{optcommalist}(\mathit{element}) = \left\{ \begin{gathered}{\mathop{\mathit{element}}}^\ast_{\bullet}\\{\mathop{\mathit{element}}}^\ast_{\left(\circ\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}\circ\right)}\\\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}\circ{\mathop{\mathit{element}}}^+_{\left(\circ\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}\circ\right)}\\{\mathop{\mathit{element}}}^+_{\left(\circ\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}\circ\right)}\circ\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}\end{gathered} \right\}\end{split}$

## 11.3. Non-terminals¶

In the syntax definitions below the following non-terminal symbols are used:

hs-string

$\begin{split}\mathop{\mathord{}\mathtt{\text{"}}\mathord{"}}{\left\{ {[\mathop{\mathord{}\mathtt{\text{"}}\mathord{"}}\mathop{\mathord{}\mathtt{\text{\\}}\mathord{"}}]^c}\mid\left\{ \begin{gathered}\mathop{\mathord{}\mathtt{\text{\\}\text{&}}\mathord{"}}\\\mathop{\mathord{}\mathtt{\text{\\}\text{\\}}\mathord{"}}\\\left\{ \mathop{\mathord{}\mathtt{\text{\\}n}\mathord{"}}\mid\mathop{\mathit{escapes}} \right\}\\\mathop{\mathord{}\mathtt{\text{\\}}\mathord{"}}[\mathop{\mathord{}\mathtt{0}\mathord{"}}\cdots\mathop{\mathord{}\mathtt{9}\mathord{"}}]\\\mathop{\mathord{}\mathtt{\text{\\}o}\mathord{"}}[\mathop{\mathord{}\mathtt{0}\mathord{"}}\cdots\mathop{\mathord{}\mathtt{7}\mathord{"}}]\\\mathop{\mathord{}\mathtt{\text{\\}x}\mathord{"}}[\mathop{\mathord{}\mathtt{0}\mathord{"}}\cdots\mathop{\mathord{}\mathtt{9}\mathord{"}}\mathop{\mathord{}\mathtt{A}\mathord{"}}\cdots\mathop{\mathord{}\mathtt{F}\mathord{"}}\mathop{\mathord{}\mathtt{a}\mathord{"}}\cdots\mathop{\mathord{}\mathtt{f}\mathord{"}}]\\\left\{ \mathop{\mathord{}\mathtt{\text{\\}\text{^}\text{@}}\mathord{"}}\mid\mathop{\mathit{control}} \right\}\\\left\{ \mathop{\mathord{}\mathtt{\text{\\}NUL}\mathord{"}}\mid\mathop{\mathit{ascii}} \right\}\end{gathered} \right\} \right\}}^\ast_{}\mathop{\mathord{}\mathtt{\text{"}}\mathord{"}}\end{split}$
unqual-name

Unqualified component names are used for package names, component names etc. but not flag names. Unqualified component name consist of components separated by dash, each component is non-empty alphanumeric string, with at least one alphabetic character. In other words, component may not look like a number.

${\left({\mathop{\mathit{alpha\text{-}num}}}^\ast_{}\mathop{\mathit{alpha}}{\mathop{\mathit{alpha\text{-}num}}}^\ast_{}\right)}^+_{\mathop{\mathord{}\mathtt{\text{-}}\mathord{"}}}$
module-name

Haskell module name as recognized by Cabal parser.

${\left(\mathop{\mathit{upper}}{\left\{ \mathop{\mathit{alpha\text{-}num}}\mid[\mathop{\mathord{}\mathtt{\text{'}}\mathord{"}}\mathop{\mathord{}\mathtt{\text{_}}\mathord{"}}] \right\}}^\ast_{}\right)}^+_{\mathop{\mathord{}\mathtt{\text{.}}\mathord{"}}}$
version

Version is to first approximation numbers separated by dots, where leading zero is not allowed and each version digit is consists at most of nine characters.

${\left\{ \mathop{\mathord{}\mathtt{0}\mathord{"}}\mid[\mathop{\mathord{}\mathtt{1}\mathord{"}}\cdots\mathop{\mathord{}\mathtt{9}\mathord{"}}]{[\mathop{\mathord{}\mathtt{0}\mathord{"}}\cdots\mathop{\mathord{}\mathtt{9}\mathord{"}}]}^{\in [0\ldots8]}_{} \right\}}^+_{\mathop{\mathord{}\mathtt{\text{.}}\mathord{"}}}$
version-range

Version range syntax is recursive. Also note the set syntax added in cabal-version: 3.0, set cannot be empty.

$\begin{split}\mathbf{fix}\;\mathop{\mathit{version\text{-}range}}\;\mathbf{in}\;\left\{ \begin{gathered}\mathop{\mathord{}\mathtt{\text{=}\text{=}}\mathord{"}}\circ\mathop{\mathit{version}}\\\mathop{\mathord{}\mathtt{\text{>}}\mathord{"}}\circ\mathop{\mathit{version}}\\\mathop{\mathord{}\mathtt{\text{<}}\mathord{"}}\circ\mathop{\mathit{version}}\\\mathop{\mathord{}\mathtt{\text{<}\text{=}}\mathord{"}}\circ\mathop{\mathit{version}}\\\mathop{\mathord{}\mathtt{\text{>}\text{=}}\mathord{"}}\circ\mathop{\mathit{version}}\\\mathop{\mathord{}\mathtt{\text{^}\text{>}\text{=}}\mathord{"}}\circ\mathop{\mathit{version}}\\\mathop{\mathord{}\mathtt{\text{=}\text{=}}\mathord{"}}\circ{\left\{ \mathop{\mathord{}\mathtt{0}\mathord{"}}\mid[\mathop{\mathord{}\mathtt{1}\mathord{"}}\cdots\mathop{\mathord{}\mathtt{9}\mathord{"}}]{[\mathop{\mathord{}\mathtt{0}\mathord{"}}\cdots\mathop{\mathord{}\mathtt{9}\mathord{"}}]}^{\in [0\ldots8]}_{} \right\}}^+_{\mathop{\mathord{}\mathtt{\text{.}}\mathord{"}}}\mathop{\mathord{}\mathtt{\text{.}\text{*}}\mathord{"}}\\\mathop{\mathit{version\text{-}range}}\circ\mathop{\mathord{}\mathtt{\text{|}\text{|}}\mathord{"}}\circ\mathop{\mathit{version\text{-}range}}\\\mathop{\mathit{version\text{-}range}}\circ\mathop{\mathord{}\mathtt{\text{&}\text{&}}\mathord{"}}\circ\mathop{\mathit{version\text{-}range}}\\\mathop{\mathord{}\mathtt{\text{(}}\mathord{"}}\circ\mathop{\mathit{version\text{-}range}}\circ\mathop{\mathord{}\mathtt{\text{)}}\mathord{"}}\\\mathop{\mathord{}\mathtt{\text{=}\text{=}}\mathord{"}}\circ\mathop{\mathord{}\mathtt{\{}\mathord{"}}\circ{\mathop{\mathit{version}}}^+_{\left(\circ\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}\circ\right)}\circ\mathop{\mathord{}\mathtt{\}}\mathord{"}}\\\mathop{\mathord{}\mathtt{\text{^}\text{>}\text{=}}\mathord{"}}\circ\mathop{\mathord{}\mathtt{\{}\mathord{"}}\circ{\mathop{\mathit{version}}}^+_{\left(\circ\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}\circ\right)}\circ\mathop{\mathord{}\mathtt{\}}\mathord{"}}\end{gathered} \right\}\end{split}$

## 11.4. Build info fields¶

asm-options
${\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}]^c}}^+_{} \right\}}^\ast_{\bullet}$
asm-sources
$\mathrm{commalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}$
autogen-includes
$\mathrm{optcommalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}$
autogen-modules
$\mathrm{commalist}\left({\left(\mathop{\mathit{upper}}{\left\{ \mathop{\mathit{alpha\text{-}num}}\mid[\mathop{\mathord{}\mathtt{\text{'}}\mathord{"}}\mathop{\mathord{}\mathtt{\text{_}}\mathord{"}}] \right\}}^\ast_{}\right)}^+_{\mathop{\mathord{}\mathtt{\text{.}}\mathord{"}}}\right)$
build-depends
$\mathrm{commalist}\left(\mathop{\mathit{pkg\text{-}name}}{\left(\mathop{\mathord{}\mathtt{\text{:}}\mathord{"}}\left\{ \mathop{\mathit{unqual\text{-}name}}\mid\mathop{\mathord{}\mathtt{\{}\mathord{"}}\circ{\mathop{\mathit{unqual\text{-}name}}}^+_{\left(\circ\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}\circ\right)}\circ\mathop{\mathord{}\mathtt{\}}\mathord{"}} \right\}\right)}^?{\left(\circ\mathop{\mathit{version\text{-}range}}\right)}^?\right)$
build-tool-depends
$\mathrm{commalist}\mathsf{\color{red}{TODO}}$
build-tools
• Monoidal field

• Deprecated since cabal-version: 2.0: Please use ‘build-tool-depends’ field

• Removed in cabal-version: 3.0: Please use ‘build-tool-depends’ field.

$\mathrm{commalist}\mathsf{\color{red}{TODO}}$
buildable
$\left\{ \mathop{\mathord{}\mathtt{True}\mathord{"}}\mid\mathop{\mathord{}\mathtt{False}\mathord{"}} \right\}$
c-sources
$\mathrm{commalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}$
cc-options
${\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}]^c}}^+_{} \right\}}^\ast_{\bullet}$
cmm-options
${\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}]^c}}^+_{} \right\}}^\ast_{\bullet}$
cmm-sources
$\mathrm{commalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}$
cpp-options
${\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}]^c}}^+_{} \right\}}^\ast_{\bullet}$
cxx-options
${\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}]^c}}^+_{} \right\}}^\ast_{\bullet}$
cxx-sources
$\mathrm{commalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}$
default-extensions
$\mathrm{optcommalist}\mathsf{\color{red}{TODO}}$
default-language
$\left\{ \mathop{\mathord{}\mathtt{Haskell98}\mathord{"}}\mid\mathop{\mathord{}\mathtt{Haskell2010}\mathord{"}} \right\}$
extensions
• Monoidal field

• Deprecated since cabal-version: 1.12: Please use ‘default-extensions’ or ‘other-extensions’ fields.

• Removed in cabal-version: 3.0: Please use ‘default-extensions’ or ‘other-extensions’ fields.

$\mathrm{optcommalist}\mathsf{\color{red}{TODO}}$
extra-bundled-libraries
$\mathrm{commalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}$
extra-dynamic-library-flavours
$\mathrm{commalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}$
extra-framework-dirs
$\mathrm{optcommalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}$
extra-ghci-libraries
$\mathrm{commalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}$
extra-lib-dirs
$\mathrm{optcommalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}$
extra-libraries
$\mathrm{commalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}$
extra-library-flavours
$\mathrm{commalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}$
frameworks
$\mathrm{optcommalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}$
ghc-options
${\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}]^c}}^+_{} \right\}}^\ast_{\bullet}$
ghc-prof-options
${\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}]^c}}^+_{} \right\}}^\ast_{\bullet}$
ghc-shared-options
${\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}]^c}}^+_{} \right\}}^\ast_{\bullet}$
ghcjs-options
${\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}]^c}}^+_{} \right\}}^\ast_{\bullet}$
ghcjs-prof-options
${\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}]^c}}^+_{} \right\}}^\ast_{\bullet}$
ghcjs-shared-options
${\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}]^c}}^+_{} \right\}}^\ast_{\bullet}$
hs-source-dir
• Monoidal field

• Deprecated since cabal-version: 1.2: Please use ‘hs-source-dirs’

• Removed in cabal-version: 3.0: Please use ‘hs-source-dirs’ field.

$\mathrm{optcommalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}$
hs-source-dirs
$\mathrm{optcommalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}$
include-dirs
$\mathrm{optcommalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}$
includes
$\mathrm{optcommalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}$
install-includes
$\mathrm{optcommalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}$
js-sources
$\mathrm{commalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}$
ld-options
${\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}]^c}}^+_{} \right\}}^\ast_{\bullet}$
mixins
• Monoidal field

• Available since cabal-version: 2.0.

• Documentation of mixins

$\mathrm{commalist}\left(\mathop{\mathit{package\text{-}name}}{\left(\mathop{\mathord{}\mathtt{\text{:}}\mathord{"}}\mathop{\mathit{library\text{-}name}}\right)}^?{\left(\bullet\left\{ \mid\mathop{\mathord{}\mathtt{hiding}\mathord{"}}\circ\mathop{\mathord{}\mathtt{\text{(}}\mathord{"}}\circ{\mathop{\mathit{module\text{-}name}}}^\ast_{\left(\circ\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}\circ\right)}\circ\mathop{\mathord{}\mathtt{\text{)}}\mathord{"}}\mid\mathop{\mathord{}\mathtt{\text{(}}\mathord{"}}\circ{\left(\mathop{\mathit{module\text{-}name}}{\left(\bullet\mathop{\mathord{}\mathtt{as}\mathord{"}}\bullet\mathop{\mathit{module\text{-}name}}\right)}^?\right)}^\ast_{\left(\circ\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}\circ\right)}\circ\mathop{\mathord{}\mathtt{\text{)}}\mathord{"}} \right\}{\left(\circ\mathop{\mathord{}\mathtt{requires}\mathord{"}}\bullet\left\{ \mid\mathop{\mathord{}\mathtt{hiding}\mathord{"}}\circ\mathop{\mathord{}\mathtt{\text{(}}\mathord{"}}\circ{\mathop{\mathit{module\text{-}name}}}^\ast_{\left(\circ\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}\circ\right)}\circ\mathop{\mathord{}\mathtt{\text{)}}\mathord{"}}\mid\mathop{\mathord{}\mathtt{\text{(}}\mathord{"}}\circ{\left(\mathop{\mathit{module\text{-}name}}{\left(\bullet\mathop{\mathord{}\mathtt{as}\mathord{"}}\bullet\mathop{\mathit{module\text{-}name}}\right)}^?\right)}^\ast_{\left(\circ\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}\circ\right)}\circ\mathop{\mathord{}\mathtt{\text{)}}\mathord{"}} \right\}\right)}^?\right)}^?\right)$
other-extensions
$\mathrm{optcommalist}\mathsf{\color{red}{TODO}}$
other-languages
$\mathrm{optcommalist}\left\{ \mathop{\mathord{}\mathtt{Haskell98}\mathord{"}}\mid\mathop{\mathord{}\mathtt{Haskell2010}\mathord{"}} \right\}$
other-modules
$\mathrm{commalist}\left({\left(\mathop{\mathit{upper}}{\left\{ \mathop{\mathit{alpha\text{-}num}}\mid[\mathop{\mathord{}\mathtt{\text{'}}\mathord{"}}\mathop{\mathord{}\mathtt{\text{_}}\mathord{"}}] \right\}}^\ast_{}\right)}^+_{\mathop{\mathord{}\mathtt{\text{.}}\mathord{"}}}\right)$
pkgconfig-depends
$\mathrm{commalist}\mathsf{\color{red}{TODO}}$
virtual-modules
$\mathrm{commalist}\left({\left(\mathop{\mathit{upper}}{\left\{ \mathop{\mathit{alpha\text{-}num}}\mid[\mathop{\mathord{}\mathtt{\text{'}}\mathord{"}}\mathop{\mathord{}\mathtt{\text{_}}\mathord{"}}] \right\}}^\ast_{}\right)}^+_{\mathop{\mathord{}\mathtt{\text{.}}\mathord{"}}}\right)$

## 11.5. Package description fields¶

author
bug-reports
build-type
$\begin{split}\left\{ \begin{gathered}\mathop{\mathord{}\mathtt{Simple}\mathord{"}}\\\mathop{\mathord{}\mathtt{Configure}\mathord{"}}\\\mathop{\mathord{}\mathtt{Custom}\mathord{"}}\\\mathop{\mathord{}\mathtt{Make}\mathord{"}}\\\mathop{\mathord{}\mathtt{Default}\mathord{"}}\end{gathered} \right\}\end{split}$
cabal-version
$\mathop{\mathord{}\mathtt{3\text{.}4}\mathord{"}}$
category
data-dir
$\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}$
data-files
$\mathrm{commalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}$
description
extra-doc-files
$\mathrm{commalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}$
extra-source-files
$\mathrm{commalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}$
extra-tmp-files
$\mathrm{commalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}$
homepage
$\mathsf{\color{red}{TODO}}$
$\mathrm{optcommalist}\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}$
maintainer
name
$\mathop{\mathit{unqual\text{-}name}}$
package-url
stability
synopsis
tested-with
$\mathrm{optcommalist}\mathsf{\color{red}{TODO}}$
version
${\left\{ \mathop{\mathord{}\mathtt{0}\mathord{"}}\mid[\mathop{\mathord{}\mathtt{1}\mathord{"}}\cdots\mathop{\mathord{}\mathtt{9}\mathord{"}}]{[\mathop{\mathord{}\mathtt{0}\mathord{"}}\cdots\mathop{\mathord{}\mathtt{9}\mathord{"}}]}^{\in [0\ldots8]}_{} \right\}}^+_{\mathop{\mathord{}\mathtt{\text{.}}\mathord{"}}}$

## 11.6. Test-suite fields¶

main-is
$\left\{ \mathop{\mathit{hs\text{-}string}}\mid{{[\mathop{\mathord{}\mathtt{\ }\mathord{"}}\mathop{\mathord{}\mathtt{\text{,}}\mathord{"}}]^c}}^+_{} \right\}$
test-module
${\left(\mathop{\mathit{upper}}{\left\{ \mathop{\mathit{alpha\text{-}num}}\mid[\mathop{\mathord{}\mathtt{\text{'}}\mathord{"}}\mathop{\mathord{}\mathtt{\text{_}}\mathord{"}}] \right\}}^\ast_{}\right)}^+_{\mathop{\mathord{}\mathtt{\text{.}}\mathord{"}}}$
type
$\left\{ \mathop{\mathord{}\mathtt{exitcode\text{-}stdio\text{-}1\text{.}0}\mathord{"}}\mid\mathop{\mathord{}\mathtt{detailed\text{-}0\text{.}9}\mathord{"}} \right\}$