孤独のHaskell 第2話

ごろー、ごろー、ごろー、ひっとっばっしーら

http://www.zusaar.com/event/502008

参加者さま、および興味を持ってくれた方、ありがとうございます。

参加者におきましては、楽しんでいただくなり、何か少しでも情報を手に入れていただけたなら、幸いです。同人即売会としてもご利用いただいたようです (約3冊)

興味を持ちつつ参加出来なかった方、また次回があるような気がするので、そのときはよろしくお願いします。毎度ですが私が一番分かってないので、きっと初心者でも大丈夫です。

今回に関しては、場を盛り上げる役目をなんとなく負っている側「主催1」としては課題が多い内容ではあった気がします。この回の趣旨がわからない状態、つまりプレゼン等がないことを知らないでいらっしゃった方などもいて、明らかに周知不足の感がありました。建前上、自分で勝手にやる方面であるというのは、なかなか今の勉強会ブーム内では自然と予測出来るものではないので、もう少し伝え方を明示しないといけません。

今回はそれに加えて、若干目標の整ってないところが強くなっていて、だからそこにいて学べるメリットも分散させてしまった印象もあります。次回は何らかの形で共通課題のようなものを考えられればと思います、出来れば初級者から何とか出来る話です。ていうかですね、今日は統合失調症について私は話を聞いてたりしましたし、向こう側ではghcjsとか話してるし、その隣ではコックとかアグダとか言ってましたし、Haskellという感じの話でもないし初級っぽい話でもないし言語の話ですら無いところもあり、こりゃぁ内輪が含まれるときの悪い癖だね、という印象を持ちました。

ちなみにCoqでAgdaです。ここ数日で話題になったエロ漫画家とは関係がございません

http://wiki.portal.chalmers.se/agda/pmwiki.php?n=Main.AgdaVsCoq

そう、課題を考えようと思ったんですが……、これもまた結構難しくて。前回はかなり偶然良い題材が生まれ出てきたんですが、今回何かないかなぁと考えつつ、結局そういう準備できてなかったんですよねぇ。

私自身が学ぶ側なので課題を制定する能力があまりないんですねぇ。あるとしても少しやっていた程度の知識を動員して関数型ならハマるところとして文字列操作とかI/O+遅延評価なんじゃねーかなぁ、というところはぼんやり考えたりしたんですが、ピッタリハマるものはやはり実地でやっている人じゃないと分からん。

今日、実際hGetContentsでハマった人がいて、何かそういうハマリポイントにスイートにぶつかるとっつきやすい課題、というのがあると良いのですが……上記の関数の解説は、どちらかというと通常のプレゼンベースの勉強会で、ハマった人自身が自身の理解を述べるのが一番全体にとって都合が良いんだと思うんですね。

実際に今回ハマっていた内容というのも、聞いていて実にありそうな話ですが (hGetContentsとファイルへの書き込みを組み合わせる段階で、hGetContentsが読み込みを必要になるまで遅延させるために、書き込みが先に発生してしまい、ファイルがtrancateされてreadが実際に発生した時には本来読み込みたい内容が消滅している、そんな内容だった気がしますが) 、その直近の理由と理屈と回避策と、さらにその関数自体を実装する方法とかになると、エキスパートが必要です。unsafeな関数が必要なんだそうですね。

もう少し話を戻せば、今回はかなり内輪的で好戦的で先進的な範囲に偏った会話が盛り上がった、というところです (いいですか、一言も実用的とは申してませんよ。Haskell仕事で書いてる人を横にしてもこれを書いてます)。参加者層のハイレベル差がそのまま濃密さに繋がってしまった。良いことなんですが、新規学習者にはマジハードなんじゃないかしら。何度も言いますが私のことです。

そういうところで、参加者として楽しんでいただけたということであれば、引き続き次回もお越しいただければと思います……

上記に書いたやや上級者寄りの雰囲気については、理想的には参加者自身が意識するものではなく、自然と出来てくるべきもののはずなので、主催の私の方でゆるやかに、上下のレベル差を越えて全体が結合するような形でのイベントになるように考えていく心づもりではいます。万が一つまらなかったという方は、私にこっそりフィードバックをしていただけると、次回以降参考にさせていただきます。いや、分かってる。結構無理筋だ。

あくまで建前上自学的に進める、というのは今後も変えませんが、いる人の上下の幅広さ (下は俺が押さえつけてる) を考えると、もっとポテンシャルがある回だという認識は変わりません。それを引き出すのは、まぁ私の目標ということで。

さて今日私の方で見た内容だけまとめときます。全体でどういう問題意識が起きたか、がまとめられてないのは、手落ちです

  • PC不所持者に対する準備がこちらで出来てなかった。λ力娘を購入されてた
  • λカ娘が売れてた。次回、もう少し持ってきてもいいのよ
  • 全体的に初心者には厳しめのレベルの高い会話が多かった様子。数人質問ベースで自学をされる人がおり、そちらのサポートはそれなりにできていたと期待するが、うまく拾えていないケースもあったように見える
  • 会話で登場する量が多かったもの: Haskell, OCaml, Agda, JavaScript (JavaScriptは関数型だ!), Java, Scala
    • phpと口走ったのは俺くらいか
  • JavaScriptが関数型: 直接関数のポインタを埋め込むのではなく function() {} で囲うことが多く、なんだそれって思想的に似通ってきてるじゃん、みたいな話だった気がするが、適当なことを書くとナタが飛んできそうだ
  • Scalaがなんだかんだで中庸的なコンテクストで使われる例がいくらか。VMとか既存のJavaライブラリ等の資産の力だなぁ、なんていう
  • @vvakameが何かはまっていたが何をやりたかったかはこちらで把握できず。@khibinoがサポート
  • @plasterが上記hGetContentsではまっていた模様。詳細は追って確認する予定。メタなコメントしかできないけど、確かにありそーな……。これも@khibinoがサポート
  • 誰か (IDわからん!) がAgdaについてアツく語っていた。∀……Unicodeな言語を久しぶりに見たよ。いや、Javaもそうか?
  • その他私がトラップできない会話多数。今回は内容が分散していた、というのはそういう事情
  • なんかJavaScriptレイヤの関数型実装みたいな話が出ていた、ような。js_of_ocamlとかghcjsとか。
  • ghcのソースコードリーディングとか。なにそれとっても楽しそう
  • 手元では伊○○先生の○○っぷりであるとか、統合失調症の人が描いた絵が常人の現実認識を超える形で表現される件などを話たりする。最後に最近のObjectiveCがA社によって汚されていく、とか。確かにmapのkeyがobjectとかだとだいぶCっぽくはなくなってくるわな
  • 次回の課題はquick sortでどうだろう、なんていう。そう、初級者から上級者まで、広く紛糾していただきたこうじゃないか (なお http://togetter.com/li/445854 をまとめた @naohaq が横にいることを知っての発言)

どんだけ混乱を来した会なのか、なんとなく雰囲気をお察しください。では次回


このブログの人気の投稿

風花雪月

pemって言ったら改行も仕様に含むんだよもん

LibreOfficeで表紙、目次、本体でフッターのページ番号のスタイルを変える