関係代数(1)

Haskell の練習に関係代数を実装しよう。

関係代数は強い静的型ととても相性が良さそうだ。データ構造は色々な定義ができそうだけど、可能な限り、シンプルに行こう。
以下はまだ試行錯誤中のデータ構造。

-- 'Database in Depth', Chapter Two.
-- Suppliers
data SNO = SNO String deriving (Eq, Show, Ord)
theSNO (SNO x) = x
data NAME = NAME String deriving (Eq, Show, Ord)

type S = (SNO, NAME, Integer, String)

suppliers = 
    fromList [ ((SNO "S1"), (NAME "Smith"), 20, "London"),
               ((SNO "S2"), (NAME "Jones"), 10, "Paris"),
               ((SNO "S3"), (NAME "Blake"), 30, "Paris"),
               ((SNO "S4"), (NAME "Clark"), 20, "London"),
               ((SNO "S5"), (NAME "Adams"), 30, "Athens")
             ] :: Set S

参考