関数型言語での遅延評価の実装方法に依存する話だと思うけど、

[1..1000000000] はリストを正格に生成せず、最初と最後のイテレータを生成し、
reverse でイテレータ順序を反転するアダプタを生成し、
それを take 3 に食べさせれば

結果は瞬時に求まって、事はすべてまるく収まると思うんだけど、違うのかな?