Elmの型
Maybe
Result
List
Listにはそもそもindexアクセスすることができない
ref良いね、境界値チェックの実行時エラーとか起こり得ないんだな

これがしたいならArray型を使えとのことらしい
この実装は正しい気がする、逆にHaskellはなんでアクセスできるんだろう
#??list-extraという便利パッケージがある
でも、本来はこれを作る場合はデータ構造をもっと考えたほうが良い場合かも知れない
つまり、正しくプログラミングできていれば、これに頼ることは殆どない(?)
ref

p.94
Dict
Set
Array
Listと異なり、任意の要素に素早くアクセスできる
Listの場合は、後ろに行くほどアクセスが遅くなる
getで要素アクセスできる
返り値はMaybeになる。なるほど!!

elmimport Array
a = Array.initialize 5 identity -- Array.fromList [0,1,2,3,4]
Array.get 1 a -- Just 1
Array.get 10 a -- Nothing
制約のある型
Haskellの型クラスの継承のようなやつ
comparable
Int, Float, Char, String
↑これらのリスト、タプル
ex. (>) : comparable -> comparable -> Bool
appendable
値をつなげることができる
String, List a
compappend
値を比較できる
値をつなげることができる
String, List a
ex. (++)
Haskell的に見るとShow型クラスとEq型クラスは全ての型にデフォルトで実装されている
type alias
で型を自作する
elmtype alias UserId = Int
type alias User =
{ id : Int
, name: String
}
カスタム型
Haskellのdataみたいなやつ
elmtype TF = Red | Yellow | Green
Task
Never

p.153
参考