replを実行してみてください。ElmのREPLを使って、文法の基礎を確認していきましょう。replと入力します。文字リテラルは「"」(ダブルクオーテーション)で囲む。文字の連結は「++」という演算子を使う。†JavaScriptとは異なり、Elmは整数と浮動小数点数を区別します。3と同じように、浮動小数点数の除算(/)と整数の除算(//)の両方が別々に存在します。†Haskellのラムダ式と同じですね。ラムダ(λ)の代わりに、バックスラッシュ(¥)を使います。"world""world"Haskellのifではelseを省略できません。Elmも同様にifでelseを省略できません。REPLでif式を書いてthen部分までしか書かないでリターンキーを押すと、続きを入力する状態になります。https://qiita.com/A_kirisaki/items/8fa5563a035c8c4d977celseは省略できません。https://qiita.com/ababup1192/items/ed93f4a76ba184ddab7fElmでは実行時エラーが原則起きません。これは分岐漏れをコンパイラが許さない制約を持つからです。ifを書いた際にはelseを省略することができません。普通のプログラミング言語にあるデータ構造(配列など)は、Elmにも用意されています。†リストは複数の値を持つことができますが、それらの値はすべて同じ型を持っていなければなりません。†タプルは固定された個数の値を保持することができ、それらの値の型はそれぞれ別々にすることができます。典型的な使いかたとしては、関数からふたつ以上の値を返す必要があるときです。†Elmのレコードは連想配列ですね。レコードは任意個のフィールドを持っていて、それぞれのフィールドに値を格納したり、フィールドから値を取り出すことができます。Elmのレコードのフィールドは固定されていて、レコードに動的にフィールドを付け加えたり取り除いたりすることはできません。†Elmのレコードには、いくつかの特徴、注意点があります。ElmのレコードはJavaScriptのオブジェクトと似ていますが、いくつか重要な違いもあります。レコードには次のような特徴があります。存在しないフィールドにアクセスすることはできません。なることもありません。キーワードを使って再帰的なレコードを作ることはできません。†Elmのデータ構造は破壊的な再代入はできない、とのこと。参照透過性を維持する関数型言語なら普通のことですね。この構文ではレコードの破壊的な更新をしているのではないことに注意してください。billのフィールドを更新したとき、実際には既存のレコードを上書きしているのではなく、新たなレコードが作成されています。効率のため、Elmは新しいレコードの内容を古いレコードとなるべく共有しようとします。10個のフィールドのうちひとつを更新したとしたら、残り9個の変更されていないフィールドはコピーされるのではなく、新しいレコードと古いレコードで共有される形になります。