4. SQL 結合式
SELECT
p . uid ,
p . user_name ,
g . group_name
FROM password as p , group as g
WHERE p . gid = g . gid
. . . . . .
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. 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. 結合式を見てみる
queryJoin = do
x <- table xs
y <- table ys
restrict $ x ! xa .==. y ! ya
project ( xa << x ! xa #
...
ya << y ! ya #
... )
何かに似ているような
. . . . . .
8. リスト内包表記
pairs xs ys =
[( x , y ) |
x <- xs ,
y <- ys ]
. . . . . .
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. ふたたび HaskellDB
queryJoin =
do
x <- table xs
y <- table ys
restrict $ x ! xa .==. grp ! ya
project ( xa << x ! xa #
...
ya << y ! ya #
... )
. . . . . .