我试图编写一个特殊的Hakyll编译器来使用lua脚本来构建我的网站。我找到了这个接缝来制作我想要的功能:
customWriterCompilerWith :: (WriterOptions -> Pandoc -> IO String)
-> ReaderOptions -> WriterOptions
-> Compiler (Item String)
customWriterCompilerWith customWriter ropt wopt = do
body <- getResourceBody
withItemBody (unsafeCompiler . customWriter wopt) $ readPandocWith ropt body
但是,当我尝试编译此函数时,我收到此错误:
• Couldn't match expected type ‘Item Pandoc’
with actual type ‘Compiler (Item Pandoc)’
• In the second argument of ‘($)’, namely
‘readPandocWith ropt body’
在Hakyll文档中搜索后,版本readPandocWith
中的4.6.8.0
类型与4.9.8.0
(我的版本)之间存在差异:
readPandocWith:: ReaderOptions-> Item String-> Item Pandoc -- 4.6.8.0
readPandocWith:: ReaderOptions-> Item String-> Compiler (Item Pandoc) -- 4.9.8.0
我在Hakyll文档中找不到一个可以帮助我的函数(类型应该是Compiler (Item Pandoc)-> Item Pandoc
)。
你知道如何解决这个问题吗?
您是否知道使用LUA脚本制作自定义Hakyll编译器的另一种方法?
答案 0 :(得分:0)
如@ user2407038所述,以下内容应该有效:
customWriterCompilerWith customWriter ropt wopt = do
body <- getResourceBody
doc <- readPandocWith ropt body
withItemBody (unsafeCompiler . customWriter wopt) doc
要详细了解<-
(>>=
的语法糖),我可以推荐http://learnyouahaskell.com(monad章节)。