J'essaye d'écrire un compilateur Hakyll spécial pour utiliser un script lua pour construire mon site web. J'ai trouvé cette fonction qui coud pour faire ce que je veux:Auteur de pandoc personnalisé avec Hakyll
customWriterCompilerWith :: (WriterOptions -> Pandoc -> IO String)
-> ReaderOptions -> WriterOptions
-> Compiler (Item String)
customWriterCompilerWith customWriter ropt wopt = do
body <- getResourceBody
withItemBody (unsafeCompiler . customWriter wopt) $ readPandocWith ropt body
Cependant, lorsque je tente de compiler cette fonction, je reçois cette erreur:
• Couldn't match expected type ‘Item Pandoc’
with actual type ‘Compiler (Item Pandoc)’
• In the second argument of ‘($)’, namely
‘readPandocWith ropt body’
Après une recherche dans la documentation Hakyll, il y a une différence entre le type de readPandocWith
dans les versions 4.6.8.0
et 4.9.8.0
(ma version):
readPandocWith:: ReaderOptions-> Item String-> Item Pandoc -- 4.6.8.0
readPandocWith:: ReaderOptions-> Item String-> Compiler (Item Pandoc) -- 4.9.8.0
Je n'ai pas trouvé dans le Documentation Hakyll une fonction (dont le type devrait être Compiler (Item Pandoc)-> Item Pandoc
) qui pourrait m'aider.
Savez-vous comment résoudre ce problème?
Connaissez-vous une autre façon de créer un compilateur Hakyll personnalisé avec un script LUA?
Il n'y a pas de telle fonction (elle ne peut pas exister); donc ce n'est pas la fonction que vous voulez. La fonction réelle que vous voulez est '>> = compilateur a -> (a -> compilateur b) -> compilateur b'. Ou, puisque vous utilisez déjà la notation 'do',' do {body <- ..; doc <- readPandocWith ropt body; withItemBody (..) doc} '. A part: Je suggérerais de vous familiariser avec les schémas d'abstraction plus basiques qui sont employés par presque toutes les bibliothèques matures de Haskell; Cela vous aidera certainement à naviguer dans l'écosystème Haskell. – user2407038
@ user2407038 Apporte une réponse. – arrowd