需要從Haskell列表中的右邊開始每增加第二個項目,但保持原點順序(例如reverse
不是這種情況)。例如:進程Haskell列表從右到左保持原點順序
f [1, 2, 3] -- [1, 3, 3]
f [1, 2, 3, 4] -- [2, 2, 4, 4]
我試着像一個下面:
fc ([]) = []
fc (x:[]) = [x]
fc (x:[y]) = [x+1,y]
fc(x:xs) = fc [x] : (fc xs) -- this line is wrong
附:很顯然,我可以扭轉(但希望瞭解原任務)列表兩次,並應用類似:
helper (x:y:tail) = [x, y+1] ++ tail
fc x = reverse (helper (reverse x))
你的第二個例子是改變第1和第3項。你想做什麼? – MASL
@MASL的任務是從右邊增加每個2。所以看右邊的列表:右邊的第二個是'3 - >(3 + 1)= 4',現在跳過'2',在第四個'1 - >(1 + 1)= 2'之後。所以結果'[2,2,4,4]' – Dewfy
好的。監視那個細節。 – MASL