ユニット型
空のタプル()はElmではユニット型と呼ばれます。一般的なので説明が必要でしょう。
aで表される型変数を持つ型エイリアスを考えてみましょう:
type alias Message a =
{ code : String
, body : a
}
このように bodyがStringであるMessageを期待する関数を作ることができます:
readMessage : Message String -> String
readMessage message =
...
または bodyが整数のリストであるようなMessageを期待する関数も書けます:
readMessage : Message (List Int) -> String
readMessage message =
...
しかし、bodyに値を必要としない関数はどうでしょう?その場合、bodyが空であることを示すために、ユニット型を使用します。
readMessage : Message () -> String
readMessage message =
...
この関数は、空のbodyを持つ Messageをとります。これは任意の値ではなく、空の値と同じです。
このように、ユニット型は通常、空の値の代わりとして使用されます。
タスク
Task型でのユニット型の使用例を見てみましょう。Taskを使う場合、ユニット型を頻繁に使用します。
典型的なタスクはエラーと結果を持ちます。
Task error result
- エラーを安全に無視できるタスクが必要な場合があります:
Task () result - あるいは、結果を無視する場合:
Task error () - またはその両方を無視する場合:
Task () ()