ちなみにスマートフォン用の表示で見るちなみに火曜日の空は僕を押しつぶした。2008-02-07Haskell勉強会#8まとめ勉強会Kanasan.JSと同日の午前中にujihisaさん主催のHaskell勉強会に参加してきました。Haskell歴3日だったのですが、果敢にも挑戦してみました。範囲は296ページから315ページ。青木さんがこの本のためにHaskellで書かれたWikiエンジンLazyLinesを題材に扱った12章です。最初っから意味不明の状況。復習の時間があったのですが、そこで出ていた11章のモナドを使って書き直す問題。(>>=)<-これって何?状態から入ったのでかなりきつかったです。'do'を(>>=)(バインドと呼ぶそうです)を使って書き直す方法だけ意味を理解せずに覚えて書いてみるも動かず。関数合成をしらなかったのです。必死にコードを目で追っていました。よって内容については書ける状態でないので、興味のある方はujihisaさんの記事を参照してください。サービス終了のお知らせ僕は宿題的な意味で、11章の練習問題について自分なりに解釈したものをまとめておきます。理解がまだ不十分なので間違ったことを書いている可能性もあります。コメントなんかで指摘していただければ幸いです。勉強会でやったのは11章、練習問題の1番で、2章で作ったhead.hsを(>>=)を使って書き直しなさいと言うもの。cs変数csをgetContentsアクションに束縛して、firstNLines関数を適用したものを表示します。firstNLines関数はlines関数で改行ごとの文字列のリストに分割したあとに、take関数ではじめのn行、つまりここでは10行を取り出します。最後にunlines関数を適用することによって、再び文字列に戻してそれを返します。用いてポイントフリースタイルにします。これはdo構文からの書き換えの基本ですね。10関数を(.)で関数合成したものです。青木さんの言葉を借りるならば、「firstNLine10して、putStrsする関数」です。次に、firstNLines関数を見ます。Stringと宣言しています。これは、引数にInt型をString型を取りString型を返すと言う意味です。ちなみにInt型は有限の符号付き整数値、String型は[Char]型の別名で文字列のことです。この関数も関数合成でポイントフリースタイルにしています。nして、unlinesする関数」です。勉強会でも言われていたように最重要項目のひつとであるモナドの練習問題としては簡単すぎますね。他の章の方が難しいかも。書き換えが出来たからと言って理解しているかというと全くそんなことはなく。本質的なところが全然理解できていないのでしばらくはモナドに取り組みたいと思っています。次の勉強会(Haskell勉強会#9)が2月22日(金)に予定されているので、ここまでにはしっぽでもいいから掴めるように頑張ります。心のライバルはsnow-bell(snow-bellの日記)女史で。追伸:芋きんつばごちそうさまでした。アーカイブ注目記事はてなブログをはじめよう!Sixeightさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。