LoginSignup
1
1

More than 3 years have passed since last update.

【自分用】Elmチートシート

Last updated at Posted at 2020-09-13

静的HTMLを生成

メッセージを生成しないインタラクティブではないHTMLを生成する。

記法

div 属性のリスト 子要素のリスト
関数名 説明
Html.div div要素を生成する。

使用例

div 
   [ class "container" ]
   [ text "Hello"
   , text "World"
   ]

1行コメント

コンパイルした結果に影響を及ぼさないプログラマのためのメモ。Elmは型注釈という機能があるから、コメントより型注釈を使ったほうがわかりやすいかも。

記法

補足: ソースコードは、キーワード(予約語)と非キーワードで構成される。キーワードは、言語が決めた字句。非キーワードはプログラマが、理解しやすいように自由に命名する。

-- ここに、わかりやすい説明を書く。
キーワード 説明
-- その後から行末までの字句をコメントとする。

使用例

-- これはHello worldを出すコードです
main = text "Hello World" 

モジュール宣言

Elmには1ファイルのソースコードに1つのモジュールを宣言する。
モジュール宣言は必ず書かなければならず省略することができない。

記法

module モジュール名 exposing (公開する型名、関数名など)
キーワード 説明
module これからあたらしいモジュールを宣言する。
exposing ただし公開する言語要素を限定する。

使用例

module Main exposing (main) 

モジュールのimport

このモジュール内で使うモジュールをimportする。
モジュールの中に型や関数が入っている。

記法

import インポートするモジュール名 exposing (インポートする型名や関数名)

キーワードの表

キーワード 説明
import 既存のモジュールをimportする。
exposing 修飾なしで使える型や関数を列挙する。

使用例

import Html exposing (..)

リスト表記

リスト表記とは、複数の値を1つのリストとすることができる。値は、関数の結果でもよい。ただしリストの要素はすべて同じ型でなければならない。

記法

[ リスト要素, リスト要素, リスト要素 ]
キーワード 説明
[ ] リストの開始と終了。
, リスト要素とリスト要素の区切り

使用例

[ 1, 2, 3 ] 

関数の定義

自作の関数を定義することができる。仮引数として宣言したものは、関数の定義で、変数のように使える。

記法

自作の関数名 仮引数名 = 関数の定義

使用例

plus x1 x2 = x1 + x2 
キーワード 説明
= 関数を定義する。左辺が定義したい関数名と複数の仮引数名。右辺が関数の定義

補足: 「複数の」という指定は、0個でもいいし、1個でもいいし、100個でもいい。

関数の型注釈

関数には型がある。型注釈によって自作の関数に関数の型を指定できる。
関数の型は、何の型を受け取って何の型を返すか -> で表す。
関数の型注釈は必須ではない。
関数の型注釈がなかった場合は、関数の定義を元にコンパイラが型を推論してくれる。
ただし関数の型は、プログラマにとって関数の使い方を説明するようなものなので、基本、型注釈したほうが良い。

記法

関数名: 引数の型 -> 引数の型 -> 戻り値の型
キーワード 説明
: 型注釈の対象となる関数名を指定する。
-> 関数の型を定義する。関数の型は、複数の引数の型と1つの戻り値の型で表される。

使用例

上記で定義したplus関数に関数の注釈をつけてみる。

-- plus関数の定義はしたものとする
plus : Int -> Int -> Int 

関数の適用

関数に引数を渡して戻り値を計算する。

記法

関数名 実引数

使用例

-- plus関数の定義はしたものとする
plus 100 200

おまけ

Elmは、命名規約を言語で指定している。

プログラミング一般の知識として有名な記法(xxxケース)を挙げる。

記法名 覚え方
camel記法 getMyName Camel(ラクダ)のコブのように見える。
kebab記法 get-my-name kebab(ケバブ)のように串に刺さってるように見える。
Pascal記法 GetMyName Pascalという言語で考案された。

Elmの文脈に応じてどの記法を使わなきゃいけないかは決まっている。

文脈 記法
モジュール名, 型名 Pascal記法
関数名, 引数名, 変数名 camel記法
使わない kebab記法
1
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1