【发布时间】:2016-02-26 15:07:15
【问题描述】:
我在 Snap haskell 应用程序中的这段代码有错误:
import Snap.Http.Server
import Snap.Core
import Snap.Snaplet
import Snap.Snaplet.Heist
import Snap.Util.FileServe
import Snap.Util.GZip
import Heist.Interpreted
import Heist
data App = App { appHeist :: Snaplet (Heist App) }
routes :: [(ByteString, Handler App App ())]
routes = [("", serveDirectory "static")]
appInit :: SnapletInit App App
appInit = makeSnaplet "app" "An snaplet example application." Nothing $ do
h <- nestSnaplet "" heist $ heistInit "templates"
addRoutes routes
return $ App h
错误是:
Not in scope: ‘heist’
我在什么包中找不到“heist”功能。
请注意,我没有使用 Lens,也不想使用。 有什么办法不使用它们并使我的代码编译?
【问题讨论】:
-
我不熟悉 Snap 或 Heist (?) 但 Snap itself already depends on lens。如果您使用的是 Snap,那么您使用的是
lens- 除了分叉库并将其修改为不使用lens之外,没有其他办法。此外,虽然许多lens类型只是类型同义词(因此您不需要实际使用lens来使用镜头),SnapletLens包含来自lens的具体类型,这意味着您真的必须在这里使用镜头。
标签: haskell haskell-snap-framework