是否有使用代数数据类型形成大订单循环组的简单方法?

时间:2016-10-18 13:20:44

标签: algorithm haskell functional-programming

要在Haskell中创建N阶循环组,您可以为大整数定义类型data BigInt = B0 BigInt | B1 BigInt | B,以及通常的add / mod操作。然后,您可以定义op a b = mod (add a b) n以获得订单n的附加组。问题是addmod的实现相对复杂,涉及带进位的棘手的状态传递递归等。是否有更直接,更自然的方法来使用数据类型创建循环组?例如:

data T = A T T | B T T | C

是否可以为该数据类型定义一个相对简单的add :: T -> T -> T,以便我们定义这样的组?我一直在尝试一些树轮换方案,但似乎要生成一个很长一段时间的操作并不容易。

0 个答案:

没有答案