..   HaskellDB     日比野 啓     2012-12-16                  .   .   .   .   .   .
HaskellDB とは Join (結合) を行なうような SQL を 結合式の代数的定義から生成するライブラリ                   .   .   .   .   .   .
HaskellDB とは Join (結合) を行なうような SQL を 結合式の代数的定義から生成するライブラリ              – ???                   .   .   .   .     .     .
SQL 結合式 SELECT    p . uid ,    p . user_name ,    g . group_name   FROM password as p , group as g   WHERE p . gid = g . g...
HaskellDB の結合式を見てみる queryJoin0 = do   pwd <- table password   grp <- table group   restrict    $ pwd ! P . gid .==. grp ! ...
HaskellDB の結合式を見てみる queryJoin0 = do   pwd <- table password   grp <- table group   restrict    $ pwd ! P . gid .==. grp ! ...
結合式を見てみる queryJoin = do   x <- table xs   y <- table ys   restrict $ x ! xa .==. y ! ya   project ( xa << x ! xa #        ...
リスト内包表記 pairs xs       ys =   [( x , y )   |      x <-      xs ,      y <-      ys ]                       .   .   .   .  ...
リスト内包表記 pairs xs ys =   [( x , y ) |      x <- xs ,      y <- ys ,      getXA x == getYA y ] data X = X { getXA :: Int , ....
ふたたび HaskellDB queryJoin =   do      x <- table xs      y <- table ys      restrict $ x ! xa .==. grp ! ya      project ( ...
.   .   .   .   .   .
Upcoming SlideShare
Loading in …5
×

HaskellDB

568 views

Published on

part of presentation at Haskell Party 2012-12 in Tokyo

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
568
On SlideShare
0
From Embeds
0
Number of Embeds
15
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

HaskellDB

  1. 1. .. HaskellDB 日比野 啓 2012-12-16 . . . . . .
  2. 2. HaskellDB とは Join (結合) を行なうような SQL を 結合式の代数的定義から生成するライブラリ . . . . . .
  3. 3. HaskellDB とは Join (結合) を行なうような SQL を 結合式の代数的定義から生成するライブラリ – ??? . . . . . .
  4. 4. SQL 結合式 SELECT p . uid , p . user_name , g . group_name FROM password as p , group as g WHERE p . gid = g . gid . . . . . .
  5. 5. HaskellDB の結合式を見てみる queryJoin0 = do pwd <- table password grp <- table group restrict $ pwd ! P . gid .==. grp ! G . gid project ( P . uid << pwd ! P . uid # P . userName << pwd ! P . userName # G . groupName << grp ! G . groupName ) . . . . . .
  6. 6. HaskellDB の結合式を見てみる queryJoin0 = do pwd <- table password grp <- table group restrict $ pwd ! P . gid .==. grp ! G . gid project ( P . uid << pwd ! P . uid # P . userName << pwd ! P . userName # G . groupName << grp ! G . groupName ) よくわからない DSL . . . . . .
  7. 7. 結合式を見てみる queryJoin = do x <- table xs y <- table ys restrict $ x ! xa .==. y ! ya project ( xa << x ! xa # ... ya << y ! ya # ... ) 何かに似ているような . . . . . .
  8. 8. リスト内包表記 pairs xs ys = [( x , y ) | x <- xs , y <- ys ] . . . . . .
  9. 9. リスト内包表記 pairs xs ys = [( x , y ) | x <- xs , y <- ys , getXA x == getYA y ] data X = X { getXA :: Int , ... } data Y = Y { getYA :: Int , ... } . . . . . .
  10. 10. ふたたび HaskellDB queryJoin = do x <- table xs y <- table ys restrict $ x ! xa .==. grp ! ya project ( xa << x ! xa # ... ya << y ! ya # ... ) . . . . . .
  11. 11. . . . . . .

×