我需要在 Haskell 中编写一个或多个函数来解决中国剩余定理。它需要使用以下定义创建:
crt :: [(Integer, Integer)] -> (Integer, Integer)
答案看起来像
>crt [(2,7), (0,3), (1,5)]
(51, 105)
我想我有一个整体的想法,我只是没有知识来写它。我知道 crt 函数必须是递归的。我创建了一个辅助函数来将元组列表拆分为两个列表的元组:
crtSplit xs = (map fst xs, product(map snd xs))
在这个例子中,它给了我:
([2,0,1],105)
我想我需要知道的是为第一个列表中的每个元素创建一个列表。我将如何开始这样做?