Elmの型
from Elm
エラーハンドリング ref
Maybe
https://qiita.com/aimy-07/items/76f85697f5996276f8f4
Result
List
Listにはそもそもindexアクセスすることができない ref
良いね、境界値チェックの実行時エラーとか起こり得ないんだなmrsekut.icon
これがしたいならArray型を使えとのことらしい
この実装は正しい気がする、逆にHaskellはなんでアクセスできるんだろう #??
list-extraという便利パッケージがある
でも、本来はこれを作る場合はデータ構造をもっと考えたほうが良い場合かも知れない
つまり、正しくプログラミングできていれば、これに頼ることは殆どない(?)
ref 『基礎からわかるElm』.icon p.94
https://qiita.com/ababup1192/items/29af9ee2f2dd779072b4#extraパッケージ
https://qiita.com/ababup1192/items/29af9ee2f2dd779072b4#listパッケージ
Dict
Set
https://qiita.com/ababup1192/items/29af9ee2f2dd779072b4#setパッケージ
Array
docs
Listと異なり、任意の要素に素早くアクセスできる
Listの場合は、後ろに行くほどアクセスが遅くなる
/ymtszw/ElmのArrayのindex accessパフォーマンス
試してないけど、配列の境界検査は流石にやってないよな?
https://stackoverflow.com/questions/37707577/array-vs-list-in-elm
getで要素アクセスできる
返り値はMaybeになる。なるほど!!mrsekut.icon
code:elm
import Array
a = Array.initialize 5 identity -- Array.fromList 0,1,2,3,4
Array.get 1 a -- Just 1
Array.get 10 a -- Nothing
https://qiita.com/ababup1192/items/29af9ee2f2dd779072b4#arrayパッケージ
制約のある型
Haskellの型クラスの継承のようなやつ
comparable
Int, Float, Char, String
↑これらのリスト、タプル
ex. (>) : comparable -> comparable -> Bool
appendable
値をつなげることができる
String, List a
compappend
値を比較できる
値をつなげることができる
String, List a
ex. (++)
Haskell的に見るとShow型クラスとEq型クラスは全ての型にデフォルトで実装されている
type aliasで型を自作する
code:elm
type alias UserId = Int
type alias User =
{ id : Int
, name: String
}
カスタム型
Haskellのdataみたいなやつ
code:elm
type TF = Red | Yellow | Green
Task
Elmの非同期処理
Never
『基礎からわかるElm』.icon p.153
参考
『基礎からわかるElm』 p. 50-