fc2ブログ

makopi23のブログ

makopi23が日々の生活で感じたことを気ままに綴るブログです。

「第5回 スタートHaskell2」に参加しました

2012/10/13(土) 「第5回 スタートHaskell2」に参加してきました。

PARTAKE(告知サイト)
http://partake.in/events/c18d7583-75b8-45e9-990d-041215c1fe29#

togetter
http://togetter.com/li/389173

以下の書籍をテキストとした、セミナー形式と演習形式を組み合わせた勉強会なのです。
すごいHaskellたのしく学ぼう!すごいHaskellたのしく学ぼう!
(2012/05/23)
Miran Lipovača

商品詳細を見る


場所は IIJ 大会議室 (17階)です。参加者は60人くらいでしょうか。
今回は以下の2章が対象範囲です。

・10章: 関数型問題解決法
・11章: ファンクターからアプリカティブファンクターへ

特に11章のアプリカティブファンクターは、モナドの謎を解き明かす鍵(?)になるそうです。

あまり予習時間は取れませんでしたが、一読し、可能な限り本のソースコードを写経してから参加しました。


10章: 関数型問題解決法
haskell_section10.jpg
(↑クリックすると発表資料に飛びます↑)

発表者は @dekokun さんです。
ソースコードはgithubに公開してくださっています。親切設計ですねー。
https://github.com/dekokun/StartHaskell2-Chapter10

■P.216のsolveRPN関数で、たった1行追加するごとに計算機能が1個増えるのはHaskellの威力かも。
■P.225に runhaskell コマンドが出てきてるが、初めて知った。。。便利ですねー

新しい何かを紹介する章ではなく、これまでの章の機能を使って課題を解決してみる、って位置づけの章ですね。
いつかスラスラとこんな課題をHaskellで解けるようになりたい。。。


11章: ファンクターからアプリカティブファンクターへ
Applicative functor from Yuichi Adachi


発表者は @UsrNameu1 さんです。以下、メモ。
---

■Applicativeはまずこれを読んで使い方を覚えるのが良い。理屈を理解するのは、あとからで良い。
 ・Applicativeのススメ
  http://d.hatena.ne.jp/kazu-yamamoto/20101211/1292021817
  by @kazu_yamamoto さん(ツイート)

■発表資料のP.7にあるCASE3が、Applicative Functorで一番大事な本質。
 line'という変数を無くせるのが良いところ。これを無くすためにFunctor則がある。

■fmapは<$>という記号を使うのが流行とのこと。以下2つは同じ意味。
 ① line <- reverse <$> getLine
 ② line <- reverse `fmap` getLine

■Listのmap
 map :: (a -> b) -> [a] -> [b]
 は、以下の構文糖衣である。
 map :: (a -> b) -> [] a -> [] b

■この章に出てくる「文脈」という単語について。
 ParserとIOはくっつかない。それは文脈が違うから。
 例えば、おもちゃのブロックで、レゴ社のブロックはレゴ社のブロックにしかくっつかない。
 ここで「レゴ」ってトコが文脈にあたる。

 ・「IO」の文脈は、副作用を起こすことができる、ということ。
 ・「Maybe」の文脈は、失敗するかもしれない、ということ。
 ・「List」の文脈は、非決定的な計算ができる、ということ。



演習問題
10章と11章の発表の後は、毎度恒例の演習タイムです。

・10章の演習問題: http://wiki.haskell.jp/Workshop/StartHaskell2/exercise10
・11章の演習問題: http://wiki.haskell.jp/Workshop/StartHaskell2/exercise11

---
11章
■ファンクターを使って書き直す その1
main = do
    xs <- getLine
    let ws = words xs
    mapM_ putStrLn ws
 ↓ ファンクターを使って書き直す ↓
main = do
    xs <- fmap words getLine
    mapM_ putStrLn xs

■ファンクターを使って書き直す その2
main = do
    xs <- getLine
    let n = sum $ map read $ words xs
    print n
 ↓ ファンクターを使って書き直す ↓
main = do
    n <- fmap (sum . map read . words) getLine
    print n

■モナドをアプリカティブに書き直す
main :: IO ()
main = do
  putStrLn "What's your name?"
  name <- getLine
  putStrLn $ "Hello, " ++ name
 ↓ アプリカティブに書き直す ↓
import Control.Applicative

main = do
    putStrLn "What's your name?"
    putStrLn =<< (++) <$> return "Hello " <*> getLine

■GHCIで :set prompt > と打つと、長いプロンプト文字列が > に変更される。
 importをたくさんしてるときに便利かも。

■パーサーコンビネータの演習は、私の頭脳では着いていけず。。。



LTタイム
演習タイムの次はLTタイムです。

LT1 「Offline Hoogleで何処でもはすはす」

Offline Hoogleで何処でもはすはす from Kiwamu Okabe

発表は @master_q さんです。

ユーモア溢れるハイテンションLT。あと、Debian、今日もやっぱ出ました~。内容も実用的です。

LT2 「Haskell と Scala」
haskell_scala.jpg
(↑クリックすると発表資料に飛びます↑)
発表は @xuwei_k さんです。

私、Scalaはちょっと前の勉強会で触ったくらいです。Scalaも、もっと勉強してみたいな。
Scalaで型を扱うのは、Haskellに比べて大変そうですねー

LT3 「Haskell で AWS」
発表は @seizans さんです。

・会社でHaskellの仕事を作り出したい。部署の25%くらいのエンジニアはHaskellが使える。
 → ということで、実際にHaskellの仕事を社内で作り出して、やってみた。
・HaskellからAWSのAPIを操作できるようにするライブラリを一人のエンジニアに作成してもらい、公開した。
 http://hackage.haskell.org/package/aws-sdk
・開発してみて、やっぱJavaよりもHaskellの方が生産性が良いとのこと。
 (例: Javaだと3API/日、Haskellだと10API/日 etc)

Haskellで仕事、俺にはまだまだ、とても無理そうです。。。
でも、いつかHaskellをマスターして、はすはすできるようになりたい。

---
しかし、どのLTもとても濃い内容で充実した内容でしたねー

あと最後に @kazu_yamamoto さんからフットサルのお誘いがありました。↓ですね。
品川でゆるいフットサル(2)
品川でゆるいフットサル(3)




★感想:
アプリカティブファンクター、難しいです。。。時間無くて、11章の最後の方まで読めてないトコあるし。
これは復習しないと、以降のモナドとかで間違いなく躓きそう。
もっと早くから予習に着手しないと、ということで反省。

運営者さん、発表者さん、ありがとうございました。

JBL 日立サンロッカーズのホームゲーム開幕戦を観戦してきました

2012/10/12(金) JBL 日立サンロッカーズのホームゲーム開幕戦を観戦してきました。

場所は大田区総合体育館です。
金曜日の平日だったんですが、試合開始は19:15なので18時過ぎに退社して向かいました。
この体育館、ウチの職場から30分くらいで行けるので便利ですねー。しかも新しくて設備も良く、綺麗です。

ちなみに私、ここ3年くらい、神奈川~東京~千葉近辺で行われる日立サンロッカーズのホームゲームは
かなりの割合で観戦しに行っています。
というのも、日立製作所の従業員はホームゲームを無料観戦できるのです。(全試合が無料では無いけどね)

この日の相手はアイシンシーホースでした。ここ数年は優勝か準優勝のどちらかの強豪です。

以下は選手紹介の場面。
20121012_sunrockers1.jpg

しかし平日ということこもあり、会場は空いてました。。。
もっとお客さん入っても良いのになぁ。そのほうが盛り上がるし。
20121012_sunrockers2.jpg

試合はというと、第3Qまで日立サンロッカーズがリードしながらも、第4Qにアイシンに逆転され、
そのまま3点差で敗れました。。。

やはりアイシンは今年も強いです。開幕3連勝。
特に、インサイドからのパスアウトによるアウトサイドシュートのフォーメーションが素晴らしいです。
外角にパスを出した後、2~3人が素早くサイドに展開してスリーポイントシュート、という流れは
なかなかディフェンス難しいです。
ちなみにパナソニックも開幕第1戦、第2戦と軽快なパスアウトからの3Pシュートの流れがすごく良く、
日立はアウェイでパナソニックに開幕2連敗でした。

そして日立はこの日もアイシンに負け、開幕3連敗。。。
でも、翌日の10/13(土)はアイシンに大差で勝ち、今シーズン初勝利!通算は1勝3敗になりました。

来週も代々木第二体育館でホームゲームがあるので、見に行く予定です。
佐藤選手と大屋選手の引退セレモニーもあることだし。

しかしPGの佐藤の引退は惜しすぎる。屈指のゲームメイクとスティールは圧巻でした。
あと、アキレス腱を断裂しながらも復帰して活躍してる佐藤選手の姿は、私をスゲー勇気付けてくれました。
というのも、私も佐藤選手とほぼ同時期に、バスケやっててアキレス腱を断裂してしまったのでした。。。
あの時はホント、日々の生活がマジ大変でしたよ。。。

佐藤選手と大屋選手、これまでお疲れ様でした。

俺もアキレス腱断裂から復帰した後、フルマラソンを2回とも完走できたし、バスケも再開したいと思います。
あと、みんなもJBLの試合を見に行って盛り上げよう!JBLの公式サイトは以下参照です。
http://www.jbl.or.jp/

今年も待ちに待ったシーズンが開幕し、これから週末が楽しみです!

-->