lastの実装とか馬鹿臭くないですか?
先頭から辿るなんて。
単調減少リストをクイックソートする最悪ケースがあったとして
遅延評価なら結果リストの最後の要素はすぐ返せると思いきや、
lastは初めから辿る実装なので、結局リストの初めが出来上がらないことには動き出せないわけで
則ちこのケースではリスト完成するまで待たされるという事じゃないですか!

プリミティブな関数程綿密に設計されなければならないとい事ですか?