2016-04-06 8 views
0

Я есть эта функцияHaskell рекурсии хвоста функции

func1 :: Double -> [(Double,Double)] -> Maybe [(Double,Double)] 
............... 
func2 :: Double -> [(Double,Double)] -> [(Double,Double)] 
func2 d [] = [] 
func2 d list = 
    let dsegs1 = func1 d list 
     dsegs2 = func2 d (tail list) 
    in fromJust dsegs1 ++ dsegs2 

Простой поток Я хотел бы достичь в func2 выглядит следующим образом:

let x = func2 3.0 list 
let y = func2 3.0 (tail list) 
let z = func2 3.0 (tail (tail list)) 
let a = func2 3.0 (tail (tail (tail list))) 

вызов func2н не раз, пока она возвращает ничего на конце и concat x, y, z, ..., a.

Как бы я это сделал?

ответ

1

Похоже, вы хотите map (func2 3.0) (tails list).

+0

спасибо .. я решил это в любом случае, но имеет 5 строк кода .. ваш так просто .. спасибо человеку –