List Haskell中枚举类型组合的类型的范围

List Haskell中枚举类型组合的类型的范围,list,haskell,range,List,Haskell,Range,假设我有以下数据类型: data A = A1 | A2 | A3 | A4 | A5 deriving (Enum) data B = B1 | B2 | B3 | B4 deriving (Enum) data C = C {a :: A, b :: B} 然后我想创建一个[C]列表,其中包含As和Bs组合的所有可能变体,其中至少包含A3。 我想如果我这样写会有用的: myListC = [(C A3 B1) .. (C A5 B4)] Haskell会自动列举所有这些。但是,显然不

假设我有以下数据类型:

data A = A1 | A2 | A3 | A4 | A5 deriving (Enum)
data B = B1 | B2 | B3 | B4 deriving (Enum)

data C = C {a :: A, b :: B} 
然后我想创建一个[C]列表,其中包含As和Bs组合的所有可能变体,其中至少包含A3。 我想如果我这样写会有用的:

myListC = [(C A3 B1) .. (C A5 B4)]
Haskell会自动列举所有这些。但是,显然不是。在数据C定义中导出枚举也是不可能的


我知道在这种情况下,手动操作并不难,但是如果我的数据C中有更多的变量呢?有什么方法可以快速完成吗?谢谢你的帮助

谢谢,真的是复制品。不确定是否必须根据StackOverflow策略立即删除它。无需删除它。这个问题可以作为具有相同问题的人的搜索引擎路径点。