testblog

プログラミングとかの話題はQiitaの方へ投稿しています。ここにはなんかテキトゥなこと書いてます。

関数型プログラミング交流会参加した。

関数型プログラミング交流会参加した。

2,3週間ぐらい前、関数型プログラミング勉強会に参加した。 時間の都合で、2つ目の発表から見に行くことができた。 モナドとか圏とかネットで聞きかじった自分のような人間でも、ちゃんと確認できるような説明を行ってくれていて、見た発表はどれも道筋をつかみやすいよう考慮されていて助かった。(やはり詳しいことはやってみないとわからないが) 発表の種類はいろいろで、皆がどういった方向にアプローチしたり研究したりしているのかわかって、関数型プログラミングの広さを感じた。

勉強会はニコニコ生放送でも見れる。http://live.nicovideo.jp/watch/lv234790219 参加しながら動画も見たりした。

感想とか

Tagless Final DSL

http://www.slideshare.net/yyu/tagless-final-dsl-52723566
qiita版 http://qiita.com/yyu/items/377513f17fec536b562e 関数型言語で内部DSLを作る方法は、Freeモナドを使った、ADTsな方法があり、 それに対比して、クラスのインスタンスで実装する、Tagless Finalという方法を解説していた。 Freeモナドもよくわかってないのだが、ソースコード多くて見比べながら理解できそうだ。あと自分でも動かすだけだ。

メイキング オブ 関数型プログラミングマンガ

http://www.slideshare.net/esehara/2015-52972366

関数型漫画を書いた経験からの関数型プログラミングを説明することの難しさを語っていた. 関数型プログラミングの説明は主に以下のようなものがあるらしい。 式が第一級 永続データ 構造化プログラミング その中で、構造化プログラミング、ということの難しさを掘り下げていた。

質問で型付けがでた。静的型付け言語以外でも関数型プログラミングはできるので、取り扱わなかったということだった。

自分は最近「関数型言語」ってなんなのか聞かれて、 関数型プログラミングをしやすい言語が関数型言語、という説明をこちらのリンク(「関数型言語」に関するFAQ形式の一般的説明)を見てもらいながらした。 関数型プログラミングの普及を図るのに、言語の性質と、プログラミング手法を別々に説明するのは一般的だと思う。

だが個人的に、型が人工言語の意味にあたるとか、型が命題、実装が証明とかいう話が、プログラム言語っておもしろいなと思った原点なので、

矢印で型を書く純粋な言語はそれがわかりやすい、 なので、型付けと純粋な構文という特徴は個人的には重要なんだけど、まだそのあたり自分でも深めてなくて、説明できない。。俺も頑張りたい。とか思った。

クリエイティブコーディングのための関数型プログラミング

インタラクティブコーディングという、表現ためのコーデイングを関数型言語で行った発表だった。 インタラクティブコーディングの説明が興味深かった。

  • 主に作るものは、情報を目に見えたり、振動させたり、といった情報を外化(画面の外に)させる。
  • 正しく動くのが目的ではない。偶然なんか出来た、とか。
  • アートの文脈でもない(自由に主張していい)、
  • 教育的。

デモンストレーションでは、 最初は画面を横断するだけだった線が、関数を加えていくことにより、 多分割され、波打ったり、渦を描き、と変化していき、すごく興味を惹かれた。

Haskellオブジェクト指向

http://tokiwoousaka.github.io/takahashi/contents/day20150913objective.html

haskellオブジェクト指向を具現する、The objective package、 の説明から、オブジェクトというものについての考察とか。

http://fumieval.hatenablog.com/entry/2015/04/06/173848

説明がわかりやすかった。圏論とかわからないのだが、なんとなく道筋は見えた。 わかりやすく説明しながら実際に見せてもらえるのは本当にありがたいと思った。 objective packageのオブジェクトはまだまだ発展する余地があるらしい。期待だ。

並行プログラミングと継続モナド

http://www.slideshare.net/RuiccRail/ss-52718653

例外処理は必要だが、例外時の処理を設定しなければならないため、本来の処理の流れがわかりづらい、そこに継続を使って、わかりやすく書ける。という発表 継続はコンパイルすると速いらしい。

ATS language overview

http://www.slideshare.net/master_q/ats-language-overview

ATS言語。説明はこちらのリンクも。http://jats-ug.metasepi.org/ 証明できる現状唯一の組み込み(他にもいろいろな言語になる)に使える言語。 この言語気になっていて、初めて間近で見れた、面白そうだ。イカ本買ったぜ。

Scalaにおける関数型並列並行プログラミング

http://xuwei-k.github.io/slides/functional-parallel-concurrent-scala/#1

Scalaの並列並行プログラミング周りの現状と、scalaz-stream(fs2)をつかったRabbitmqのクライアントusagiの発表

javaの並行並列ライブラリも使うのだろうか。scala標準のコレクションというのも凄そうだ。 akkaのacterは型がなく、何にでも使おうと失敗する人が多いらしい。 scalaz-streamは、Functional Streams for Scalaでfs2という名前になったらしい。 playのiteratreeはakka streamsに変わっていっているらしい。

まとめ

最近勉強会に行くようになったのだが、行く度に知らない世界を知れるので大変感謝しています。がんばろう。