スポンサーリンク

Elm入門ハンズオン文法編をElm0.19で写経してみる(1)

2019年3月25日

上記の本を写経している最中ですが、少し基本に戻って、以下のサイトを写経してみたいと思います。

https://gitpitch.com/ababup1192/elm-handson1/master?grs=github&t=sky

スポンサードリンク

開発環境

Windows 10 Pro
Chrome
VisualStudioCode 1.32.3
git version 2.20.1.windows.1
nvm 1.1.7
node 10.2.0
npm 6.4.1
elm 0.19.0-bugfix6
elm-format 0.8.1
VisualStudioCodeの拡張機能でelmをインストールして、settings.jsonに以下のようにelmを設定。
(『Alt + Shift + F』と『Ctrl + S』を使用。)

    "[elm]": {
        "editor.formatOnSave": true
    },

elm-repl で写経する

VisualStudioCodeでC:/repl_from_vscode/ フォルダを開き、Ctrl+@でターミナル画面を出して、以下を入力。

elm repl

elm-replが起動するので、以下を入力。
文字列は、二重ダッシュで囲むとのことです。

"REPLで式を打ち、評価値・型を見ながら文法を確認していきます。"

式の種類

式とは、評価されることで値になるもの だそうです。(評価って何???)

  1. リテラル
  2. 関数
  3. let式
  4. if式
  5. パターンマッチ(case式)
  6. Union Types

リテラル:BOOL, NUMBER

リテラル: CHAR, STRING

リテラル: LIST

リストはある型の要素が0個以上の集まってできる型

Elmでは任意の型を表すとき「a, b, c, …」のように、予約語を除いた小文字から始まる型変数を利用する。

リテラル: タプル

タプルは複数の型の0個以上の要素からなる型
Elm0.19からは、タプルの要素は3個までだそうです。

numberのように不定の型の場合、要素ごとに別物として表すため違うnumber型として推論される そうです。

空のタプルはUnitとも言われ、何もない型を表すときに使われます。

リテラル: レコード

レコードはkeyとvalueからなるセットです。
JavaScriptのオブジェクトに似ています。連想配列ですね。

JavaScriptのオブジェクトのように、record.x のようにアクセスできます。
{ レコード変数 | 変数束縛 } の形でレコードの値を変更した、新しいレコードを生成します。
(あくまで、新しいrecordです。Elmでは変数はimmutable)

リテラルは、直接記述することのできる式。
そのままの形が評価されて値となる。
複数の要素を扱うリテラルで記述できるデータ構造はList, タプル, レコードがある。

  • Listは単一の型の要素しか扱えないが豊富な関数が用意されており、最も使われるデータ構造の一つ。
  • タプルtupleは複数の型を混在して扱えるが、要素は3個までと汎用性は高くない。
  • レコードrecordは所謂Getter, Setterが用意されており、Objectのように使える便利な型。

プチ演習1

name = { firstName = “Donald”, lastName = “Trump” } レコードからフルネーム(スペース区切りの名前)を生成してみる。

プチ演習2

johnのageを17にeyesightを(0.6, 0.7)にした、newJohnを作成。
(変数はimmutableなので、johnはjohnのまま。)

https://www.atmarkit.co.jp/ait/articles/1703/10/news005.html
プロエンジニアインタビュー(4):
教えて! キラキラお兄さん「クソみたいな社会は変えられますか?」 (1/4)
2017年03月10日 05時00分 公開


スポンサーリンク

ElmElm

Posted by twosquirrel