3
私はいくつかの新しいメタデータをpandocに追加するフィルタを作成しようとしています。pandocにメタデータを追加するフィルタ
これは、これまでの私のコードです:
#!/usr/bin/runhaskell
import Data.Map
import Text.Pandoc
import Text.Pandoc.JSON
import Text.Pandoc.Walk
addName :: Meta -> Meta
addName m = Meta $ insert "Name" (MetaString "My Name") (unMeta m)
main :: IO()
main = toJSONFilter addName
私は次のエラーを取得する:それは正しく構築するよう
add-meta.hs:12:8: error:
• No instance for (Walkable Meta Pandoc)
arising from a use of ‘toJSONFilter’
• In the expression: toJSONFilter addName
In an equation for ‘main’: main = toJSONFilter addName
Failed, modules loaded: none.
は、どのように私はこれを変更することができますか?
ありがとう、あなたの説明は非常に明確です。私は間違って "Meta - > Meta"が "a - > a"と一致すると仮定していました。 –
@リチャードパーソン私は仮定が間違っているとは思わないし、私はこの答えが明示的には仮定が正しいと言っていると思う。なぜそれが間違っていると思いますか? –
@DanielWagner私はHaskellの用語を正しいものにするのに苦労しますが、私は最善を尽くします。関数toJSONFilterが引数を必要としていることがわかりました(a - > a)。私の機能にはMeta→Metaという署名があり、MetaはPandocからのものですから、私はJSONFilterにそれが作用すると考えました。実際には、「Walkable Meta Pandoc」というインスタンスは存在しないため、失敗しました。マイケルの答えは、 "Walkable Pandoc Pandoc"のインスタンスがあるので、Meta - > Metaの代わりにそのシグネチャを使用するように自分の関数を変更できると説明しました。 これではっきりしていますか? –