Haskell联接函数输入按特定顺序在列表中

时间:2018-11-20 23:58:11

标签: haskell

Exercise

大家好!

我一直在努力使此功能以他们想要的特定方式工作。

我尽了一切,唯一可以做的输出就是没有起点和终点,例如:[[((a,b),(b,c))]

有人可以给我一些帮助吗?我被困住了...

更新:类型Point =(浮点,浮点)

1 个答案:

答案 0 :(得分:-1)

好吧,因为您可以在没有起点/终点的情况下正常工作。一种简单的完成方法是使用您的函数,但在内部函数的列表中添加起点/终点。因此,您的界面仍然相同。

使用递归,模式匹配和保护的另一种方法是:

-- assuming the inputs to be int as definition of point not given
solve x z [] = [(x,z)]

solve x z (y:ys)
            | x == 0 = solve y z ys     -- x ==0 to be replaced by null/empty condition on x
            | null ys && z == 0 = []    -- z ==0 to be replaced by null/empty condition on z
            | null ys = [(y, z)]
            | otherwise = (x,y) : solve y z ys

添加了一个基本情况,即基于darthfennec注释,列表为空或起点/终点无效。