リストとは一様なデータ構造である。
つまり、同じ型の要素を複数個格納できる。
整数のリストや、文字列のリストなどを作ることが出来るのだ。
Main> let lostNumbers = [4,8,15,16,23,42]
Main> lostNumbers
[4,8,15,16,23,42]
リスト結合Main> [1,2,3,4] ++ [9,10,11,12]
[1,2,3,4,9,10,11,12]
リスト結合(文字列)Main> "hello" ++ " " ++ "world"
"hello world"Main> ['w', 'o'] ++ ['o', 't']
"woot"
リスト結合の別解Main> 'A':" SMALL CAT"
"A SMALL CAT"Main> 5:[1,2,3,4,5]
[5,1,2,3,4,5]
- の場合、1つだけ要素が入ったやつでもリストにしないといけない
Main> [1,2,3,4] ++ [5]
[1,2,3,4,5]
「リストと数値の結合」扱いされているので、無理。Main> [1,2,3,4] ++ 5
:13:14:
No instance for (Num [a0])
arising from the literal `5'
Possible fix: add an instance declaration for (Num [a0])
In the second argument of `(++)', namely `5'
In the expression: [1, 2, 3, 4] ++ 5
In an equation for `it': it = [1, 2, 3, ....] ++ 5
n番目の要素を調べるMain> "Steve Buscemi" !! 6
'B'Main> [9.4,33.2,96.2,11.2,23.25] !! 1
33.2Main> [9.4,33.2,96.2,11.2,23.25] !! 8
Exception: Prelude.(!!): index too large
リストの中にリストも入れられる
Main> let b = [[1,2,3,4],[5,3,3,3],[1,2,2,3,4],[1,2,3]]Main> b
[[1,2,3,4],[5,3,3,3],[1,2,2,3,4],[1,2,3]]Main> b ++ 1,1,1,1
[[1,2,3,4],[5,3,3,3],[1,2,2,3,4],[1,2,3],[1,1,1,1]]Main> b ++ [1,1,1]
:20:7:
No instance for (Num [Integer])
arising from the literal `1'
Possible fix: add an instance declaration for (Num [Integer])
In the expression: 1
In the second argument of `(++)', namely `[1, 1, 1]'
In the expression: b ++ [1, 1, 1]Main> [6,6,6]:b
[[6,6,6],[1,2,3,4],[5,3,3,3],[1,2,2,3,4],[1,2,3]]Main> b !! 2
[1,2,2,3,4]
リスト比較Main> [3,2,1] > [2,1,0]
TrueMain> [3,2,1] > [2,10,100]
TrueMain> [3,4,2] < [3,4,3]
TrueMain> [3,4,2] > [2,4]
TrueMain> [3,4,2] == [3,4,2]
True
最初の要素を調べるMain> head [5,4,3,2,1]
5
最後の要素を調べるMain> last [5,4,3,2,1]
1
最後の要素を取り除くMain> init [5,4,3,2,1]
[5,4,3,2]
空リストの先頭を調べるが、ないからエラーMain> head []
Exception: Prelude.head: empty list
リストの長さを調べる
Main> length [5,4,3,2,1]
5
リストが空かどうかを調べるMain> null [1,2,3]
FalseMain> null
True
リストを逆順にするMain> reverse [5,4,3,2,1]
[1,2,3,4,5]
指定された数の要素を取り出しリストを返しますMain> take 3 [5,4,3,2,1]
[5,4,3]Main> take 1 [3,9,3]
[3]Main> take 5 [1,2]
[1,2]Main> take 0 [6,6,6]
指定された数の要素を先頭から削除Main> drop 3 [8,4,2,1,5,6]
[1,5,6]Main> drop 0 [1,2,3,4]
[1,2,3,4]Main> drop 100 [1,2,3,4]
[]
リストの最大値jMain> maximum [1,9,2,3,4]
9
リストの最小値Main> minimum [8,4,2,1,5,6]
1
リストの和を求めるMain> sum [5,2,1,6,3,2,7,5]
31
リストの積を求めるMain> product [6,2,1,2]
24Main> product [1,2,3,4,5,7,6,0]
0
指定した値がリストの中に含まれているかを調べるMain> 4 `elem` [3,4,5,6]
TrueMain> 10 `elem` [3,4,5,6]
False