Country data type and functions.
The country
library provides a data type for dealing with the set of countries as defined by ISO 3166. The representation is compact and is well-suited to use with vectors and primitive arrays. Additionally, this library exports functions that provide the following encodings and decodings: . * ISO Alpha-2 (two-letter country code) . * ISO Alpha-3 (three-letter country code) . * ISO Numeric (three-digit country code) . . The main differences between this library and `iso3166-country-codes` are: . * it doesn't use an ADT to represent countries, instead it uses the country's three-digit country code. . * it doesn't use String
for encoding/decoding . * it provides two-alpha and three-alpha country codes. . * it provides Prim
instances from the primitive
package to allow types to be used in unboxed vectors/arrays. . * BSD3 licence instead of LGPL . Please open up an issue on github if there is anything you would like to see added.
country
This is a mega-repo with two projects:
country
: A library for dealing with countries, country codes, etc.country-code-generation
: An executable that generates some of the source code incountry
. It converts bothcountries.csv
andaliases.txt
into lists of tuples.
Build Instructions
Some of source code in the country
library is generated. To generate this code, the country-code-generation
application reads the top-level aliases.txt
and countries.csv
file and outputs source Haskell. If neither of these two files have been modified, then it is not necessary to run country-code-generation
. A cabal.project
file is used to build two targets. From the project root, run:
cabal build country-code-generation
/home/jdoe/path/to/projects/country/.../country-code-generation
cabal build country