Haskell-modules
Haskell-モジュール
Javaで作業したことがある場合は、 package というフォルダーにすべてのクラスがどのようにバインドされているかがわかります。 同様に、Haskellは*モジュール*のコレクションと考えることができます。
Haskellは関数型言語であり、すべてが式として示されているため、モジュールは類似または関連するタイプの関数のコレクションとして呼び出すことができます。
1つのモジュールから別のモジュールに関数を*インポート*できます。 他の関数の定義を開始する前に、すべての「import」ステートメントが最初に来るはずです。 この章では、Haskellモジュールのさまざまな機能について学びます。
リストモジュール
*List* は、 *list* 型のデータを処理するための素晴らしい機能を提供します。 リストモジュールをインポートすると、さまざまな機能を自由に使用できます。
次の例では、Listモジュールで使用可能ないくつかの重要な機能を使用しています。
import Data.List
main = do
putStrLn("Different methods of List Module")
print(intersperse '.' "finddevguides.com")
print(intercalate " " ["Lets","Start","with","Haskell"])
print(splitAt 7 "HaskellTutorial")
print (sort [8,5,3,2,1,6,4,2])
ここでは、多くの関数を定義せずに使用しています。 これは、これらの関数がリストモジュールで使用できるためです。 Listモジュールをインポートした後、Haskellコンパイラーはこれらすべての関数をグローバル名前空間で利用可能にしました。 したがって、これらの関数を使用できます。
私たちのコードは次の出力を生成します-
Different methods of List Module
"T.u.t.o.r.i.a.l.s.p.o.i.n.t...c.o.m"
"Lets Start with Haskell"
("Haskell","Tutorial")
[1,2,2,3,4,5,6,8]
チャーモジュール
*Char* モジュールには、Characterタイプで動作する多くの事前定義関数があります。 次のコードブロックを見てください-
import Data.Char
main = do
putStrLn("Different methods of Char Module")
print(toUpper 'a')
print(words "Let us study tonight")
print(toLower 'A')
ここで、関数 toUpper および toLower は Char モジュール内で既に定義されています。 それは次の出力を生成します-
Different methods of Char Module
'A'
["Let","us","study","tonight"]
'a'
マップモジュール
*Map* は、並べ替えられていない付加価値ペア型のデータ型です。 多くの便利な機能を備えた広く使用されているモジュールです。 次の例は、Mapモジュールで使用可能な事前定義済み関数の使用方法を示しています。
import Data.Map (Map)
import qualified Data.Map as Map --required for GHCI
myMap :: Integer -> Map Integer [Integer]
myMap n = Map.fromList (map makePair [1..n])
where makePair x = (x, [x])
main = print(myMap 3)
それは次の出力を生成します-
fromList [(1,[1]),(2,[2]),(3,[3])]
セットモジュール
Setモジュールには、数学データを操作するための非常に便利な定義済み関数がいくつかあります。 セットはバイナリツリーとして実装されるため、セット内のすべての要素は一意である必要があります。
次のサンプルコードを見てください
import qualified Data.Set as Set
text1 = "Hey buddy"
text2 = "This tutorial is for Haskell"
main = do
let set1 = Set.fromList text1
set2 = Set.fromList text2
print(set1)
print(set2)
ここでは、StringをSetに変更しています。 次の出力が生成されます。 出力セットに文字の繰り返しがないことを確認してください。
fromList " Hbdeuy"
fromList " HTaefhiklorstu"
カスタムモジュール
他のプログラムで呼び出すことができるカスタムモジュールを作成する方法を見てみましょう。 このカスタムモジュールを実装するには、 "main.hs" とともに "custom.hs" という別のファイルを作成します。
カスタムモジュールを作成し、その中にいくつかの関数を定義しましょう。
custom.hs
module Custom (
showEven,
showBoolean
) where
showEven:: Int-> Bool
showEven x = do
if x 'rem' 2 == 0
then True
else False
showBoolean :: Bool->Int
showBoolean c = do
if c == True
then 1
else 0
カスタムモジュールの準備ができました。 次に、プログラムにインポートします。
main.hs
import Custom
main = do
print(showEven 4)
print(showBoolean True)
私たちのコードは次の出力を生成します-
True
1
「4」は偶数なので、 showEven 関数は True を返します。 showBoolean 関数は、関数に渡したブール関数が「True」であるため、「1」を返します。