2016-01-24 71 views
0

我需要一些幫助來解決Haskell中函數組合的任務。我需要編寫一個給定整數n和內部元素列表的列表,返回每個內部列表中n-th元素的列表。所以它會是這樣的: select 2 [[2,3,4],[5,6],[9,9,9]] = [3,6,9]。事情是,我需要使用函數組合編寫它,所以它應該看起來像select = ...。換句話說,我想讓這個免費點haskell,函數組合

現在,我有以下幾點:

select::Int->[[Int]]->[Int] 
select a = map $ head. reverse. take a 

我堅持了下來,我不知道如何從第一和唯一的條款刪除這些a。任何人都可以幫助我嗎?:)

+0

不知道我明白這個問題。你將不得不給整數n(猜你是在你的代碼?),給一個組合函數。 –

+0

這就是現在所做的,我需要從定義中刪除'a'。 –

+0

不明白你想要完成什麼,對不起。 –

回答

3

根據你目前有什麼,你可以使用select = map . ((head . reverse) .) . take,你也可以簡化爲select = map . (last .) . take。另一種方法是使用select = map . flip (!!) . subtract 1

您可以使用pointfree包自動派生無功能版本的函數。

一般來說,我會建議不要這樣做。具有多個參數的函數在以無點式定義時會變得相當模糊。