soy-curd's blog

へぼプログラマーです [https://twitter.com/soycurd1]

Elm文法メモ その2

Elm文法メモ第二弾。

let式

let ~のインデント内で変数を束縛できて、in ~ の値が返ってくる。let内にスコープが限られているため、外からはlet内で定義した変数は参照できない。

import Graphics.Element exposing(show)


-- let式
sentence =
  let beer = "pilzner"
      verb = " is good."
  in
    beer ++ verb

main =
  sentence
    |> show
    -- "pilzner is good."

エイリアス

型に別名を付けられる。

import Graphics.Element exposing(show)


-- 型エイリアス
type alias Beer = String

drink:Beer
drink = "pilzner"

main =
  drink
    |> show
    -- "pilzner"

マッピング

Elmには独自の型であるSignalというものがある。イベントの時間推移のような存在で(いわゆるストリーム)、これに関数を適用する際、Signal.mapを利用できる。糖衣構文として'<~'という書き方も可能。

import Graphics.Element exposing(show)
import Mouse
import Signal exposing((<~), (~))


-- マッピング
pos : Signal.Signal Int
pos = Signal.map (\x -> x * x)  Mouse.x

main =
  -- このようにも書ける
  show <~ pos
  -- マウスのx軸の値が表示される