インポートとモジュール
Elmでは、importキーワードを使用してモジュールをインポートします。
import Html
これは Htmlモジュールをインポートします。すると完全修飾パスを使用して、このモジュールの関数と型を使用できます。
Html.div [] []
また、モジュールをインポートして、そこから特定の関数と型をexposeすることもできます。
import Html exposing (div)
divは現在のスコープに導入され、直接使うことができます:
div [] []
モジュール内のすべてをexposeすることさえできます:
import Html exposing (..)
この場合、モジュール中のすべての関数と型を直接使用することができます。しかし、あいまいさやモジュール間の衝突の可能性があるため、これはほとんどの場合お勧めできません。
モジュール名と同じ名前の型
多くのモジュールは、モジュールと同じ名前の型をエクスポートします。例えば、 HtmlモジュールはHtml型を持ち、 TaskモジュールはTask型を持っています。
この関数は Html要素を返します:
import Html
myFunction : Html.Html
myFunction =
...
上記は以下と等価です:
import Html exposing (Html)
myFunction : Html
myFunction =
...
最初の例は Htmlモジュールのみをインポートし、完全修飾パスHtml.Htmlを使用します。
2番目の例では、 HtmlモジュールをHtmlモジュールからexposeしています。また、Html型を直接使用します。
モジュールの宣言
elmでモジュールを作成するときは、最初にmodule宣言を追加します:
module Main exposing (..)
Mainはモジュールの名前です。 exposing(..)は、このモジュールのすべての関数と型を公開することを意味します。 elmは、このモジュールをMain.elmというファイル、つまりモジュールと同じ名前のファイルで見つけることを想定しています。
アプリケーションにより深いファイル構成を持たせることができます。たとえば、ファイルPlayers/Utils.elmには次のような宣言が必要です。
module Players.Utils exposing (..)
アプリケーションのどこからでもこのモジュールをインポートすることができます:
import Players.Utils