リスト
Linked List
リテラル
code:Elm
list1 : List Int
list2 : List Int
list2 =
[ 1
, 2
, 3
, 4
]
末尾カンマは禁止。行頭カンマ方式(差分が出にくいって理由)
比較
code:Elm
list1 == list2 -- == True
そのまま比較できる
先頭に追加
code:Elm
::演算子で先頭に要素を追加
::は右結合。つまりこう
code:Elm
== 1 :: 2 :: 3 :: 4 :: []
== (1 :: (2 :: (3 :: (4 :: []))))
== (1 :: (2 :: (3 :: 4 ))) パターンマッチ
上の感じではがせる
code:Elm
x :: y :: z :: w :: [] ->
...
x :: y :: z :: rest ->
...
x :: xs ->
...
[] ->
...
要素を何個でも一気にはがせるけどあんまりやんない
下の二つのブランチで、要素を一個ずつ処理、要素がなくなったときの処理になる
code:Elm
list3 : List Int
list3 =
++で結合できる
中の型がcomparableならcomparableだったはず
性能
リンクドリストなので前からたどるのはいいけどランダムアクセスには向いてない
関連package
基本
communityのExtra系の一つ
大概見つかると思う
必ず要素が一つあるリスト