LLで関数プログラミング @LLRing 青木 峰郎 日本Rubyの会 主著 – ふつうのLinuxプログラミング – ふつうのHaskellプログラミング 関数型言語は勉強としてつかうだけ 住井 英二郎 東北大学 – 教員だけど気分は学生(試験のとき以外…) ICFPプログラミングコンテスト – 外の人2回+中の人1回 MinCaml 日常のプログラムは全てOCaml 中村 正三郎 アンテナハウス所属 関数型の先にある形式仕様記述を宣伝 したいために登場 久井 亨 クロネッカーズデルタ合同会社代表 関数型言語はよく知らない MEPHISTO – 制約システムと無限ストリームをベースにし た、アニメーション生成システム – 入出力を含む動的なプログラムの動作を、 宣言的な記述で表現できる – 2005年度未踏ユースで採択 山下 伸夫 株式会社タイムインターメディア Haskell宣伝マン Monad嫌い スクリプトもHaskellで書く 今泉 貴史 千葉大学 総合メディア基盤センター 言語系の研究をしたことも… – 最近はネットワーク系が多い 昔やっていたのは属性文法型言語 関数型言語は使うよりもプログラミングモ デルとして興味を持っている 関数型言語 何があれば関数型言語? – LISPとHaskellとMLは関数型言語 – ほかにももちろんある かもね 関数型言語の特徴 高階関数 宣言的な記述 静的型付け 遅延評価 高階関数 関数を計算の対象とするもの 関数型言語には必須ではない – オブジェクト指向に近い概念? コードのコピー・ペーストが不要になる 当然あるもの、無いと話にならない – Rubyにだってイテレ-タはある フレームワークに関数をはめ込んで機能 を実現可能 静的型付け 型をチェックしてくれることが重要 型を書くのがプログラミングのひとつ – 型を書かなければいけないわけではない – 型を考えることが全体設計となっている 型推論が型は決めてくれる 型なしの言語だと決めなければいけないことを 先送りできる(?) 記述の上で型がないとDucktypeが楽にできる – Javaで言うところのInterfaceみたいなもの 宣言的な記述 考えなければならないことが限られる 宣言的な記述をできるようにプログラミン グ言語を高めてきた – 抽象度を高くしてきた 仕様記述言語、定理証明器との相性が 良い 現実問題として… 副作用は要るでしょう 約束事を覚えておかなくても良い 副作用 副作用はMonadでごまかす(?) →Monadで副作用が表現できちゃった まじめに考えなければ良い 穢れた世界 – 穢れているからこそ生き延びる 遅延評価 遅延評価の場合は評価順序が決まらないので 副作用との相性が悪い – 必要なときに使えればよい 遅延評価は理解するのが難しい – 副作用を使いたいから難しいのだろう 関数型言語には遅延評価があった方が良いだ ろう 遅延評価がないものは考えられない – 遅延評価があれば楽ができる Haskell 頭を使いたくない人はどうぞ コンピュータの動きを考える必要はない 覚えることはすごく少ない 基本的な考え方に例外が少ない 頭を真っ白にできるのであればお勧め 日本語処理はいまひとつ – Hugsではそれなりに使える パッケージシステムは作ろうとしているところ Lisp(?) Clean Concurrent Clean – GUIが充実しています – マルチプラットフォームで動作しています O'z Ruby でも、関数型言語を学ぶことは重要だと 思う Scheme LISP系一般に論理型もできるし、関数型 もできる パラダイムを勉強するにもよいだろう OCaml 現実的な折衷案 – 命令型やオブジェクト指向に慣れている人にはお勧め ライブラリが比較的充実している – パッケージシステムもある – モジュールシステムはいい加減かも 関数型プログラミングができれば別に言語は何でもい いかも 日本語処理はどうなっているのか – デフォルトは文字コードは考えていない – GUIへの日本語出力は まだちょっと大変 C++ 最近は関数型言語と定義されているらし い LLではないけれど… 本が厚くて面倒くさい 覚えることはたくさんある Python 無限リストも使えます 関数合成も使えます 今までどおりのテクニックを使いながら関 数型も使いたい人には便利
© Copyright 2024 ExpyDoc