Haskell-モジュール

Javaで作業したことがある場合は、すべてのクラスが「 package。同様に、Haskellはのコレクションと見なすことができますmodules

Haskellは関数型言語であり、すべてが式として表されるため、モジュールは類似または関連するタイプの関数のコレクションとして呼び出すことができます。

あなたはできる importあるモジュールから別のモジュールへの関数。他の関数の定義を開始する前に、すべての「import」ステートメントを最初に指定する必要があります。この章では、Haskellモジュールのさまざまな機能について学習します。

リストモジュール

List 一緒に動作するいくつかの素晴らしい機能を提供します listデータ型。Listモジュールをインポートすると、さまざまな機能を自由に使用できるようになります。

次の例では、Listモジュールで使用できるいくつかの重要な関数を使用しています。

import Data.List  

main = do  
   putStrLn("Different methods of List Module") 
   print(intersperse '.' "Tutorialspoint.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モジュールには、文字タイプを操作するための事前定義された関数がたくさんあります。次のコードブロックを見てください-

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)

ここでは、文字列をセットに変更しています。次の出力が生成されます。出力セットに文字の繰り返しがないことを確認してください。

fromList " Hbdeuy"
fromList " HTaefhiklorstu"

カスタムモジュール

他のプログラムで呼び出すことができるカスタムモジュールを作成する方法を見てみましょう。このカスタムモジュールを実装するために、という別のファイルを作成します"custom.hs" 私たちと一緒に "main.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

ザ・ showEven 関数は戻ります True、「4」は偶数です。ザ・showBoolean 関数に渡したブール関数が「True」であるため、関数は「1」を返します。