Haskell-more-on-functions

提供:Dev Guides
移動先:案内検索

Haskell-関数の詳細

ここまで、多くの種類のHaskell関数について説明し、それらの関数を呼び出すためのさまざまな方法を使用しました。 この章では、特別なTypeクラスをインポートせずにHaskellで簡単に使用できるいくつかの基本的な関数について学びます。 これらの関数のほとんどは、他の高次関数の一部です。

ヘッド機能

*Head* 関数はリストで機能します。 基本的にリストである入力引数の最初を返します。 次の例では、10個の値を持つリストを渡し、 *head* 関数を使用してそのリストの最初の要素を生成しています。
main = do
   let x = [1..10]
   putStrLn "Our list is:"
   print (x)
   putStrLn "The first element of the list is:"
   print (head x)

それは次の出力を生成します-

Our list is:
[1,2,3,4,5,6,7,8,9,10]
The first element of the list is:
1

テール機能

*Tail* は、 *head* 関数を補完する関数です。 入力として *list* を取り、先頭部分のないリスト全体を生成します。 つまり、 *tail* 関数は、最初の要素なしでリスト全体を返します。 次の例を見てください-
main = do
   let x = [1..10]
   putStrLn "Our list is:"
   print (x)
   putStrLn "The tail of our list is:"
   print (tail x)

それは次の出力を生成します-

Our list is:
[1,2,3,4,5,6,7,8,9,10]
The tail of our list is:
[2,3,4,5,6,7,8,9,10]

最後の機能

名前が示すように、入力として提供されるリストの最後の要素を生成します。 次の例を確認してください。

main = do
   let x = [1..10]
   putStrLn "Our list is:"
   print (x)
   putStrLn "The last element of our list is:"
   print (last x)

それは次の出力を生成します-

Our list is:
[1,2,3,4,5,6,7,8,9,10]
The last element of our list is:
10

初期化関数

*Init* は、 *tail* 関数の反対の働きをします。 引数としてリストを取り、最後のエントリなしでリスト全体を返します。
main = do
   let x = [1..10]
   putStrLn "Our list is:"
   print (x)
   putStrLn "Our list without the last entry:"
   print (init x)

今、その出力を観察します-

Our list is:
[1,2,3,4,5,6,7,8,9,10]
Our list without the last entry:
[1,2,3,4,5,6,7,8,9]

ヌル関数

*Null* は、指定されたリストが空の場合にのみ *True* を返し、それ以外の場合は *False* を返すブールチェック関数です。 次のコードは、指定されたリストが空かどうかを確認します。
main = do
   let x = [1..10]
   putStrLn "Our list is:"
   print (x)
   putStrLn "Is our list empty?"
   print (null x)

それは次の出力を生成します-

Our list is:
[1,2,3,4,5,6,7,8,9,10]
Is our list empty?
False

逆機能

String入力で機能し、入力全体を逆順に変換し、結果として1つの出力を提供します。 以下は、この関数のコードベースです。

main = do
   let x = [1..10]
   putStrLn "Our list is:"
   print (x)
   putStrLn "The list in Reverse Order is:"
   print (reverse x)

それは次の出力を生成します-

Our list is:
[1,2,3,4,5,6,7,8,9,10]
The list in Reverse Order is:
[10,9,8,7,6,5,4,3,2,1]

長さ関数

この関数は、引数として指定された list の長さを計算するために使用されます。 次の例を見てください-

main = do
   let x = [1..10]
   putStrLn "Our list is:"
   print (x)
   putStrLn "The length of this list is:"
   print (length x)

リストには10​​個の要素があるため、出力として10のコードが生成されます。

Our list is:
[1,2,3,4,5,6,7,8,9,10]
The length of this list is:
10

機能を取る

*Take* 関数は、別のストリングからサブストリングを作成するために使用されます。 次のコードは、Haskellでtake関数を使用する方法を示しています-
main = print(take 5 ([1 .. 10]))

コードは、提供されたリストから5つの要素を含む部分文字列を生成します-

[1,2,3,4,5]

ドロップ機能

この関数は、部分文字列の生成にも使用されます。 take 関数の反対として機能します。 次のコードを見てください-

main = print(drop 5 ([1 .. 10]))

コードは、指定されたリストから最初の5つの要素を削除し、残りの5つの要素を出力します。 それは次の出力を生成します-

[6,7,8,9,10]

最大機能

この関数は、指定されたリストから最大値を持つ要素を見つけるために使用されます。 実際にそれを使用する方法を見てみましょう-

main = do
   let x = [1,45,565,1245,02,2]
   putStrLn "The maximum value element of the list is:"
   print (maximum x)

上記のコードは次の出力を生成します-

The maximum value element of the list is:
1245

最小関数

この関数は、指定されたリストから最小値を持つ要素を見つけるために使用されます。 これは*最大*関数の反対です。

main = do
   let x = [1,45,565,1245,02,2]
   putStrLn "The minimum value element of the list is:"
   print (minimum x)

上記のコードの出力は-

The minimum value element of the list is:
1

和関数

名前が示すように、この関数は指定されたリストに存在するすべての要素の合計を返します。 次のコードは、5つの要素のリストを受け取り、その合計を出力として返します。

main = do
   let x = [1..5]
   putStrLn "Our list is:"
   print (x)
   putStrLn "The summation of the list elements is:"
   print (sum x)

それは次の出力を生成します-

Our list is:
[1,2,3,4,5]
The summation of the list elements is:
15

製品の機能

この関数を使用して、リスト内のすべての要素を乗算し、その値を出力できます。

main = do
   let x = [1..5]
   putStrLn "Our list is:"
   print (x)
   putStrLn "The multiplication of the list elements is:"
   print (product x)

私たちのコードは次の出力を生成します-

Our list is:
[1,2,3,4,5]
The multiplication of the list elements is:
120

エレム関数

この関数は、指定されたリストに特定の要素が含まれているかどうかを確認するために使用されます。 したがって、 true または false を返します。

次のコードは、指定された要素のリストに値786が含まれているかどうかを確認します。

main = do
   let x = [1,45,155,1785]
   putStrLn "Our list is:"
   print (x)
   putStrLn "Does it contain 786?"
   print (elem 786 (x))

それは次の出力を生成します-

Our list is:
[1,45,155,1785]
Does it contain 786?
False

同じコードを使用して、提供されたリストに値1785が含まれているかどうかを確認します。