我是Haskell的新手,为了提高自己的编程水平,我想做一个简单的Web服务器。我希望能够灵活地表示页面,所以我的想法是让网页成为可渲染数据的列表(就像在Java中你可以创建实现某个接口的对象列表)其中Renderable定义为:
class Renderable a where
render :: a -> IO String
不幸的是,我了解到列表必须是具体类型,因此我只能制作一种可渲染数据类型的列表。而且似乎无法创建受类型类约束的数据,因此我不能创建像RenderList这样的东西。我的临时解决方案是这样的:
myPage =
[render $ someData
,render $ someMoreData
,render $ someOtherData
...
]
但这种做法感觉很别扭,使用类型类没有任何好处,并且感觉应该有更好的方法。所以我想知道是否有什么方式可以重新组织我的代码,使其更加清晰、符合标准的Haskell实践,并且仍然易于扩展?
谢谢。