頭を取り出して、とある判断に依って残りの部分から一つだけ要素を削って、今取った頭を尻につけて再帰するとします

f (c:cs) = f $ (nanikaDrop c cs)++[c]

この場合、リストだと計算量膨れ上がってしまいます(長いリストの末尾に追加は不適)

うまい解決策はありませんか?(Sequenceなど大袈裟なもの持ち出さずとも済むやつ)