我对 Haskell 还很陌生,为了变得更好,我正在尝试制作一个简单的 Web 服务器。我想让我表示页面的方式可扩展,所以我的想法是让网页成为可渲染数据的列表(比如如何制作在 Java 中实现某个接口的对象列表),其中 Renderable 是
class Renderable a where
render :: a -> IO String
不幸的是,我了解到列表必须是具体类型,所以我只能列出一种类型的可渲染数据。此外,创建受类型类约束的数据似乎是不可能的,所以我不能制作像 RenderList 数据这样的东西。我的临时解决方案是这样的:
myPage =
[render $ someData
,render $ someMoreData
,render $ someOtherData
...
]
但这感觉很尴尬,使使用类型类没有任何好处,并且感觉应该有更好的方法。所以我想知道有什么方法可以重组我必须更清洁、更符合标准 Haskell 实践并且仍然易于扩展的东西?
谢谢。