私は Haskell にかなり慣れていないので、うまくなるために単純な Web サーバーを作ろうとしています。ページの表現方法を拡張可能にしたかったので、Web ページを Renderable データのリスト (Java で特定のインターフェースを実装するオブジェクトのリストを作成する方法など) にすることを考えました。Renderable は
class Renderable a where
render :: a -> IO String
残念ながら、リストは具象型でなければならないことを知ったので、Renderable データの 1 つの型のリストしか作成できません。また、型クラスに制約されたデータを作成することは不可能のようで、RenderList データのようなものを作成することはできません。私の一時的な解決策は次のとおりです。
myPage =
[render $ someData
,render $ someMoreData
,render $ someOtherData
...
]
しかし、これはぎこちなく感じ、型クラスを使用しても何のメリットもありません。より良い方法があるはずだと感じています。では、標準的な Haskell の慣行に沿って、よりクリーンにする必要があるものを再構築し、さらに簡単に拡張できるようにするにはどうすればよいでしょうか?
ありがとう。