Le type unit

Le tuple vide () est appelé le type unit en Elm. Il est tellement répandu qu'il mérite quelques explications.

Considérez un alias de type avec une variable de type (représentée par un a) :

type alias Message a =
    { code : String
    , body : a
    }

Vous pouvez écrire une fonction qui attend un Message avec le champ body en tant que String de cette manière :

readMessage : Message String -> String
readMessage message =
    ...

Ou une fonction qui attend un Message avec le champ body comme liste d'entiers :

readMessage : Message (List Int) -> String
readMessage message =
    ...

Mais qu'en est-il d'une fonction qui n'a pas besoin de valeur pour body ? Nous utilisons le type unit pour indiquer que le body devrait être vide :

readMessage : Message () -> String
readMessage message =
    ...

Cette fonction prend un Message avec un body vide. Ce n'est pas pareil que n'importe quelle valeur, c'est juste une valeur vide.

Ainsi, le type unit est couramment utilisé comme emplacement pour une valeur vide.

Tâche (Task)

Un exemple concret est le type Task. Lorsque vous utiliserez Task, vous rencontrerez le type unit fréquemment.

Une tâche typique contient une erreur (error) et un résultat (result) :

Task error result
  • Des fois nous voulons une tâche où l'erreur peut être ignorée en tout tranquillité : Task () result
  • Ou alors le résultat est ignoré : Task error ()
  • Ou les deux : Task () ()

results matching ""

    No results matching ""