所以我有这个工作示例(Snap + Postgres):
listBooks :: AppHandler ()
listBooks = do
results <- query_ "select * from books"
writeJSON $ (results :: [Book])
作为一个练习,我试图用
>>=
重写它。运算符,但需要注释类型会破坏美观。我想不出比这更好的了:query_ "select * from books" >>= return.(\x -> x :: [Book]) >>= writeJSON
还有其他“更顺畅”的方式吗? (最好不指定包装单子(monad)类型)
最佳答案
你可以稍微缩短到
query_ "select * from books" >>= writeJSON . (\x -> x :: [Book])
除此之外,还没有,尽管有计划为快捷语法实现 GHC 扩展
(:: [Book]) = (\x -> x :: [Book])
看@duplode's link
似乎它的代码是 3 天前开始编写的,所以应该在下一个 GHC 版本中。
关于haskell - 绑定(bind)链中更平滑的类型注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32320818/