EN
PréludeChargé par défaut — aucun import nécessaire.

Types de données fondamentaux

Synopsis
data Unit = Unit

Unit n'a qu'une seule valeur : Unit, aussi notée ().

data Bool = True | False

Bool a deux valeurs. Utilisé par if-then-else et les gardes.

data Nat
  = Z
  | S Nat

Nat est le type des entiers naturels (0, 1, 2, ...). Z est zéro, S n est le successeur de n. Représenté en interne par des entiers de précision arbitraire, pas en Peano.

Z

zéro

S

le successeur d'un naturel (S n = n + 1)

data String
  = Empty
  | Cons Char String

String est un texte, rangé d'un bloc (UTF-8), pas fait de cellules. Ces deux constructeurs sont sa VUE : une chaîne est Empty, ou Cons c s — son premier caractère c suivi du reste s — dans un motif comme dans une expression (Cons 'a' "bc" vaut "abc"). Comme pour Nat, le compilateur garde la forme native.

Empty

la chaîne vide, aussi notée ""

Cons

un premier caractère devant le reste

data Pair a b = Pair a b

Pair regroupe deux valeurs. Notée (a, b) via la notation ci-dessous.

data Maybe a
  = Nothing
  | Just a

Maybe représente une valeur optionnelle : Nothing ou Just x.

Nothing

aucune valeur

Just

une valeur, enveloppée

data Either a b
  = Left a
  | Right b

Either représente un choix entre deux types. Par convention, Left est le cas d'erreur et Right le cas de succès.

Left

par convention, le cas d'erreur

par convention, le cas de succès

data Result e a
  = Ok a
  | Error e

Result représente une opération qui peut échouer : Ok x transporte une valeur de succès, Error e transporte une erreur. Contrairement à Either, les noms des constructeurs disent quel côté est lequel (comme en OCaml/F#/Gleam). Le type de l'erreur vient en premier afin que les opérations à la map agissent sur la valeur de succès (le dernier paramètre).

Ok

succès, porteur d'une valeur

Error

échec, transportant une erreur

data List a
  = Nil
  | a :: List a

List est la structure de données récursive fondamentale. :: est un constructeur infixe (comme le : de Haskell).

Nil

la liste vide, aussi écrite []

::

un élément de tête devant une liste de queue (infixe, comme le : de Haskell)