不在范围内:“抢劫”(我没有使用 Lens)
Not in scope: ‘heist’ (I'm not using Lens)
我在 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,但从 nestSnaplet
的类型签名来看,您似乎需要使用某种镜头。 nestSnaplet
有签名
nestSnaplet :: ByteString -> SnapletLens v v1 -> SnapletInit b v1-> Initializer b v (Snaplet v1)
其中 SnapletLens
只是 lens
中 Alens
的类型同义词。
这也让我怀疑 heist
最初是使用 lens
制作的模板 Haskell 派生函数。可能发生的事情是 App
曾经看起来像这样:
-- You may need to import Contol.Lens.TH
data App = App { _heist :: Snaplet (Heist App) }
makeLenses ''App
这会让 heist
成为一个镜头。
我在 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,但从 nestSnaplet
的类型签名来看,您似乎需要使用某种镜头。 nestSnaplet
有签名
nestSnaplet :: ByteString -> SnapletLens v v1 -> SnapletInit b v1-> Initializer b v (Snaplet v1)
其中 SnapletLens
只是 lens
中 Alens
的类型同义词。
这也让我怀疑 heist
最初是使用 lens
制作的模板 Haskell 派生函数。可能发生的事情是 App
曾经看起来像这样:
-- You may need to import Contol.Lens.TH
data App = App { _heist :: Snaplet (Heist App) }
makeLenses ''App
这会让 heist
成为一个镜头。