ã©ããã説æããã¹ããæ©ã¿ãŸããã以äžã®
clients ã¯æããã«ã³ã³ãã€ã«ãéããªãã³ãŒãã§ãã
clients :: [(Text,Key Client)]
clients = do
list <- runDB $ selectList [] [Asc ClientId]
fmap (\(Entity clientId c) -> (clientName c::Text,clientId)) list
ãªããªã
do ãš
runDB ãããã®ã§ãæ£ãã
clients ã®åã¯
HandlerFor site a ã®ãããªåã«ãªã£ãŠããŠæ¬²ããã¯ãã§ãã
ãŸãã¯ãå®éã«ããããã®åŒã®åãã©ã®ããã«ãªã£ãŠããããghci ã§ç¢ºèªããŠã¿ããšè¯ããšæããŸãã
# ã¯ã©ã¹å¶çŽã¯çç¥ããŠããã®ã§ãæ£ç¢ºãªçµæã§ã¯ãããŸããã
ghci> :t selectList
[Filter record]
-> [SelectOpt record]
-> ReaderT backend m [Entity record]
ghci> :t selectList []
[SelectOpt record]
-> ReaderT backend m [Entity record]
ghci> :t selectList [] []
ReaderT backend m [Entity record]
ghci> :t runDB
ReaderT (YesodPersistBackend site) (HandlerFor site) a
-> HandlerFor site a
ããã§
runDB (selectList [] []) ã®åã¯
HandlerFor site [Entity record] ã«ãªããŸãã
å倿°ã¯ãããã
backend ã
YesodPersistBackend site,
m ã
HandlerFor site,
a ã
[Entity record] ã«å¯Ÿå¿ããŸãã
list <-runDB (selectList [] [])
ãã®æã®
list ã®åã¯åœç¶
[Entity record] ã§ãã(ãã®èŸºããè¯ãããããªãå Žåã¯ãã¢ããã®
äœ¿ãæ¹ ãç°¡åã«åŸ©ç¿ããŠãããšè¯ããšæããŸãã)
ãªããã®ã³ãŒãã§Expected typeãïŒéã®ãªã¹ãã«ãªã£ãŠããŸãã®ã§ããããïŒ
fmap ã®åããèããŠã¿ãŸãããã
ghci> :t fmap
Functor f => (a -> b) -> f a -> f b
fmap ã®ç¬¬äºåŒæ°ã¯
f a ã®åã§ããå¿
èŠãããã®ã§ã
list ã®åã¯
f a ã«ãªããŸãããã
ãããŠãããã«
list <- runDB (...)
ãšããã³ãŒãã«ãªã£ãŠããããã
runDB (...) ã®çµæã®å (clients ã®å) ã¯
m (f a) ã«ãªã£ãŠããå¿
èŠããããŸãããã
ãã®
m ãš
f ãäž¡æ¹ãšã
ãªã¹ã ([]) ã«æšè«ãããäºéã®ãªã¹ããæåŸ
ãããšããã³ã³ãã€ã«ãšã©ãŒã«ãªã£ãŠããŸãã
ãããªæãã§äŒãããŸããïŒ