読者です 読者をやめる 読者になる 読者になる

糸電話式のアレ

プログラミングのこと。毎日のこと。書いています。

第3回 Scala道場まとめ

おととい開催いたしました、第3回 Scala道場のまとめです。


この記事はメモなので、後で修正したり整形したりします。


テーマはLv2の関数型の使い方を学ぼう、です。


今回の参加者は、不甲斐ない道場主の私ことid:aya_eiya
コレまでの全開催に参加していただいている、Groovyの普及とかその辺のなんかしらをライフワークにされてらっしゃるid:fumokmmさん。
そして今回初参加となりましたJavaプログラマid:arephさんです。


余談ですが、私はfumokmmさんにScalaとか言う言語あるよ!的なアレでScalaを始めました。


この勉強は、名古屋でやっているのに参加してぇんだけど、あれ金曜とかだし、んな時間に行ける時間に仕事終わんねぇんだよね。
ということでScalaに詳しい人抜きでやっています。


今回の勉強会の様子は、主にfumokmmさんにハイク実況を行ってもらったので、以下をご参照ください。
http://h.hatena.ne.jp/keyword/Scala%E9%81%93%E5%A0%B4


さて、
関数型と言うことで、何はともあれリストの処理です。
今回主に参考にしたのは、オライリーのプログラミングScalaです。


mapとかあるよねー、的なことをちらとやってー。
reduceLeftをやってみました。

このメソッドは寡聞にして知らなかったのですが、
どうやら、
foldLeftの初期値ない版と言うことで良さそうです。


いわゆる畳み込み演算を行ってくれるものですね。
「畳み込みってなぁに?」とarephさんが言ったから、3月19日は畳み込み記念日。
と言うわけで、畳み込みの説明をしばし。
まず、for文は積分だよね〜とか。
ワースウガクッテオモシロイヤー
よし、数学ガールを読もう。


ここまでで、関数型の基本はOK(無茶な...)


で、最近流行のKeyValue(http://d.hatena.ne.jp/fumokmm/20110315/1300210292)をやってみよう!
ということに。


誰もうまく書けない。。。


そのうち、まずGroovyで既に実装されていたfumokmmさんが完成させました。

これをarephさんが改修(まだGistに上がってないかな?)

私は、それを横目に、自分が完成させるまで見ない!と決め込んで作業続行。
夜までがんばりましたが、色々勘違いしてた部分もありまして、勉強会の時間では完成せず。。。


結局、夜中過ぎ午前までかかって完成したのは以下のもの。
あーお題よく見てなかったから、結果がだいぶ違うなー。

とりあえず、畳み込みで処理を行うつもりでしたので要素が1つの場合のために、
ダミーを追加することになっています。
要素がない場合のことは知りませんっ。

とりあえず、Scala難しいというのと、関数型プログラミングの一端に触れることができました。


難しいけど、がんばれる。


でも、楽しいのは、Groovyだなぁと思いました。

以上、後でちゃんと書きまーす。