14
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Haskellの基本まとめ2

Posted at

関数の基本

構文

関数名 [引数] = 関数本体

sample.hs
doubleMe x = x + x
> :l sample.hs
> doubleMe 10
20
> doubleMe 2.3
6.4

Haskellにおける関数の特徴

  • 関数の定義の中で、自分で定義した関数を呼び出すことも出来る。
    • 例: doubleUs x y = doubleMe x + doubleMe y
  • 必ず何かしらの値を返す。
  • 関数名にアポストロフィ( ' )が使える。
    • 慣習的に正格(遅延じゃない)版の関数を表したり、少し変更した場合に元の関数名に似た名前にするために使う。
  • 関数名は小文字から始める。

リストの基本

Haskellのリストは一様なデータ構造

> let numbers = [1, 2, 5, 7, 10]
> numbers
[1, 2, 5, 7, 10]

> let strings = ['h', 'e', 'l', 'l', 'o']
> strings
"helloe"

リストの連結

> [1, 2, 3] ++ [4, 5, 6]
[1, 2, 3, 4, 5, 6]
> "hello" ++ " " ++ "world"
"hello world"

> "OK":" Google"
"OK Google"
> 4:[1, 2, 3]
[4, 1, 2, 3]

リストの要素へのアクセス
※添字は0から

> "abc" !! 1
'b'
> [2, 4, 6, 8] !! 3
8

リストの入れ子

> let lists = [[1, 1, 1], [2, 2], [3, 3, 3, 3]]
> lists
[[1, 1, 1], [2, 2], [3, 3, 3, 3]]
> lists !! 1
[2, 2]

リストの比較
中の要素を辞書順で比較する

> [3, 2, 1] > [1, 2, 1]
True
> [1, 2, 3] == [1, 2, 3]
True

基本的なリスト関数

  1. head : 先頭の要素を返す
  2. tail : 先頭を除いた残りのリストを返す
  3. last : リストの最後の要素を返す
  4. init : 最後の要素を除いた残りのリストを返す
  5. length : リストの長さを返す
  6. null : リストが空かどうかを調べる
  7. reverse : リストを逆順にする
  8. take : 先頭から指定された数の要素を取り出したリストを返す
  9. drop : 指定された数の要素を先頭から削除したリストを返す
  10. maximum : リストの中で最大の要素を返す
  11. minimum : リストの那珂で最小の要素を返す
  12. sum : 数のリストの和を返す
  13. product : 数のリストの積を返す
  14. elem : 指定した要素がリストに含まれているかを調べる
> head [1, 3, 5, 7]
5
> tail [1, 3, 5, 7]
[3, 5, 7]
> last [1, 3, 5, 7]
7
> init [1, 3, 5, 7]
[1, 3, 5]

> length [1, 3, 5, 7]
4
> null [1, 2, 3]
False
> null []
True
> reverse [1, 2, 3]
[3, 2, 1]
> take 2 [1, 3, 5, 7]
[1, 3]
> drop 2 [1, 3, 5, 7, 9]
[5, 7, 9]

> maximum [3, 9, 1, 5]
9
> minimum [3, 9, 1, 5]
1
> sum [2, 4, 6, 8]
20
> product [2, 4, 6, 8]
384

> 2 `elem` [1, 3, 2, 5]
True
> 4 `elem` [1, 3, 2, 5]
False

レンジ:列挙出来る要素のリスト

> [1..10]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
> ['a'..'g']
"abcdefg"

ステップを指定したレンジ

> [2, 4..10]
[2, 4, 6, 8, 10]
> [5, 4..1]
[5, 4, 3, 2, 1]
14
8
0

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
14
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?