1
3
实现目标的最简单方法似乎是这样,这也是我可能在实践中使用的方法:只需实现两个函数
然后成功
如果使用包含元素的类型作为健全性检查太弱,那么您可以始终添加newtype包装器,这可能是一个好主意。 与您的标签相比,这仍然有一些限制。这种方法 能够 当然也有道理。这需要一些样板,是的。原则上,您实际上不需要为标签定义新的类型,也可以使用
等等,但我实际上并不推荐这个。 至于你的第二个问题,
好吧,不需要试图要求一个列表包含一个或多个,您可以简单地要求一个就在那里,然后再加上一个您不关心其类型的输出列表。对于后者,您可以使用一个简单的存在主义包装器,
然后
更复杂的需求,比如这个构造函数中最多有三个,是 可能的 也是,但这会让人很痛苦地表达出来。从一些开始
你可能会让它发挥作用,但你需要使用很多
|
2
3
我认为对于这种特殊的情况,只使用Output标签就可以了,这大大简化了。方法是“用愿望的输出标签标记每个输入和输出”
给你 snipet 用于此代码。也许你可以用一些不那么复杂的类型族来扩展功能,但我对这个级别的haskell不太熟悉。我想你可以做一些类似的事情
|