[1,1,2,2,3,3…] のような無限リストを作る

すごいH本読みながら関数型プログラム勉強を始めました。

すごいHaskellたのしく学ぼう!

すごいHaskellたのしく学ぼう!

内容が面白いので、まだ最初の方ですが本読みつつ手元のMacで動作確認してたら、
ふと「 [1,1,2,2,3,3…] のような無限リストを作るのってどうするんだろう?」と思ったので
ツイッターでつぶやいてみました。





まだすごいH本の3章までしか読んでないので、foldr1とかよく分かんない関数ばっかりだけど、
実行してみたらなんか知らんがうごいた!すごい。



ふむ。これも動いた。0から始まってたけどこれはfrom(1)にすれば問題ない。



おお、なんじゃこれ。よくわからない。。。
って言ったら教えてくれました。


なるほどー。桁落ちしてるのね。




Scalaで書いてもらったことで、プログラムの書き方的に Haskell との共通点とか違うところとか Scala の独自なところがおぼろげながら見えて面白かった。


「せっかくだしまとめようかなー」って思ってたら、以下のようなツイートを発見。


これはわかりやすいなー。
Haskellだとどうなるんだろと思ったので調べて書いてみた。

concatMap (\x -> [x]++[x]) [1..]


関数型面白いねー。もうちょっとすごいH本読み進めてみよう。