Hexirp / hexirp-hakyll

I decided to deeply fork hakyll.
Apache License 2.0
1 stars 0 forks source link

Hexyll.Core.Provider を書き直す #112

Closed Hexirp closed 4 years ago

Hexirp commented 4 years ago

See https://github.com/Hexirp/hexirp-hakyll/issues/98 . Fix https://github.com/Hexirp/hexirp-hakyll/issues/111 .

Hexyll.Core.Provider を書き直した。 Provider 型を MonadProvider という型クラスに変更した。最初は Identifier 型でファイルを管理しなければならないという固定概念のせいで設計が固まらなくて時間を取られたが、最終的には Path 型を直接使うことで設計が固まった。

設計としては MonadMetadataMonadStore の合成のような感じになった。関数の名前はもう少し練りたい。キャッシュのために MonadStore を条件とすることになった。 MonadMetadata は、そもそも MonadProvider から Metadata 型に関する作用を外して、メタデータも Compiler 型により生成されるということにすることに決めたので、条件としなかった。元々のメタデータは生成方法が Provider 関連で決められていて変更できなかったのを変更できるようにする。 MonadMetadata は一つのリソースに一つのメタデータがあると規定しているが、これを除くことも考えている。

マージした後は色々な型クラスのインスタンスを定義する予定。