我有一個函數,讓我們叫它fct1
,它採取任何列表,並獲得列表中的所有等於一個,並在其餘所有第二個列表,它們在一個元組內。遞歸Haskell函數,將列表分隔成一對列表,然後通過對
data sale : (sale string int)
fct1 [sale,sale..sale]
將只返回有字符串中的第二個第一列表上的相同,並且所有其他)
除權號銷售(更容易理解):fct1 [1,2,3,4,6,7,1,3,4]= ([1,1],[2,3,4,6,7,3,4])
而且我有第二個函數,可以叫它fct2
。
fct2
始終應用於fst(元組),我需要將結果累加到列表中。而名單將返回值
我需要申請的FST(元組)一個fct2
然後敷在SND相同fct1
(元組),所以它重建,其餘的元組,直到我達到fct1 = []
我知道我必須遞歸地做,只是不知道從哪裏開始...... fct1
和fct2
。
這裏是我的僞...
type Qty = Integer
type Product =string
data Sales = Sales Product Qty`
as is a list
fct1 = (fct1 (\(Sales product qty) -> product == product(head as)) as)
it return a tuple (list1,list2)
fct2:
的fct1必須在SND(元組)上運行,所以我到達[]作爲SND(元組) 和同時我需要在fst(tuple)fct2上運行這個列表並將它總結爲一個需要保留並累積到一個列表中的lement。
我希望我更明確的這個時候..
找到了解決辦法這裏是代碼:
fct2 as = accSales [] as
where accSales n as =
if as == []
then sortBy compareSale n
else let x =sumQty(fst(fct1(as)))
xs = snd(fct1(as))
in accSales (x:n) xs`
我覺得你應該給我們一些更多的例子:)(尤其是關於你最後提到的元組東西。) – huon
另外,[stop,Hoogle time!](http://www.haskell.org/hoogle/?hoogle=%28a-%3EBool%29+-%3E+ [a] + - %3E +%28 [a]%2C [a]%29)('partition'聽起來最有用。) – huon
我確實看過分區,但是不太明白它是如何應用於我的tupple的。事實上,我已經完成了所有需要應用的功能,我需要了解如何通過tupplet並用新的替換連接符,直到達到[] –