我试图通过脚手架网站上的Yesod book制作聊天示例。
我认为我已经纠正了几乎所有我必须纠正的内容,但所有这一切对我来说都是全新的(这是我的第一个"真正的" Haskell项目)和我&#39 ;我对所有修改都不太自信;此外,我真的陷入了第7点。如果有必要,你能否评论以下所有要点,并帮助我做到7.(在大胆一些问题/评论中)?
import Chat as Import
和import Chat.Data as Import
添加到Import.NoFoundation,getChat
记录中添加App
(在appHttpManager
和appLogger
之后),为App添加YesodChat实例:我必须修改getUserName
案例中的Just uid
(在聊天的原始示例中,它只是{{1} }):
Just uid -> return uid
这似乎很长并且嵌套......我们可以做得更好吗?
Just uid -> do
muser <- runDB $ get uid
case muser of
Nothing -> error "uid not in the DB"
Just user -> return $ userIdent user
中,在Fundation.hs
定义中的chatWidget ChatR
行之后添加pc <- widgetToPageContent $ do
。现在,我收到以下警告:
defaultLayout
我想我必须在Application.hs:60:36: Warning:
Fields of ‘App’ not initialised: getChat
In the expression: App {..}
定义中的getChat <- newChan >>=Chat
和appLogger <- newStdoutLoggerSet defaultBufSize >>= makeYesodLogger
后面写appStatic <- ...
之类的内容,但类型不匹配。 我完全迷失在这里,我真的不明白这个功能makeFundation
是如何运作的。