LLで関数プログラミング @LLRing.

Slides:



Advertisements
Similar presentations
オレと型推論と 少年オッカムル 関数型言語 OCaml 再帰関数 リスト プログラミングの基礎 ダイクストラ法 Windows で文字化け F# モジュール ファンクタ 副作用 アキュームレータ.
Advertisements

1 情報基礎 A 第 9 週 プログラミング入門 VBA の基本文法 1 準備・変数・データの入出力 徳山 豪・全 眞嬉 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野.
ソフトウェア工学 知能情報学部 新田直也. オブジェクト指向パラダイムと は  オブジェクト指向言語の発展に伴って形成され てきたソフトウェア開発上の概念.オブジェク ト指向分析,オブジェクト指向設計など,プロ グラミング以外の工程でも用いられる.  ソフトウェアを処理や関数ではなくオブジェク.
オブジェクト指向 言語 論 知能情報学部 新田直也. 講義概要  私の研究室: 13 号館 2 階 (13-206)  講義資料について :  参考図書 : 河西朝雄 : 「原理がわかる プログラムの法則」,
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
プログラミング言語ADP 大藤雄久.
アルゴリズムとデータ構造 第2回 線形リスト(復習).
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
プログラマのレベルアップ.
オレポータビリティ 日本Rubyの会 青木 峰郎.
班紹介 描画班一同.
C#によるWindowsFormApplication入門
プログラミングパラダイム さまざまな計算のモデルにもとづく、 プログラミングの方法論 手続き型 関数型 オブジェクト指向 代数 幾何.
オブジェクト指向言語論 知能情報学部 新田直也.
VBA(Visual Basic Application)を使ったプログラミングの初歩概説
オブジェクト指向プログラミング(2) OOPの三大要素 「クラス」「ポリモーフィズム」「継承」
プログラミング演習II 2004年10月19日(第1回) 理学部数学科・木村巌.
応用情報処理V 第1回 プログラミングとは何か 2004年9月27日.
プログラミング言語論 理工学部 情報システム工学科 新田直也.
プログラミング言語論 理工学部 情報システム工学科 新田直也.
応用情報処理V 第1回 プログラミングとは何か 2003年9月29日.
オブジェクト指向 プログラミング 第一回 知能情報学部 新田直也.
心理学情報処理法Ⅰ コンピュータ言語の歴史.
プログラミング言語論 プログラミング言語論 ガイダンス 水野 嘉明 ガイダンス 1 1.
2007/1/11 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井 英二郎
Day3 Day4 Day3 Day4.
C#とC++とオブジェクト指向 上甲 健史.
ML 演習 第 7 回 新井淳也、中村宇佑、前田俊行 2011/05/31.
2004年度 サマースクール in 稚内 JavaによるWebアプリケーション入門
2003年度 データベース論 安藤 友晴.
0からわかるF# Part1 中 博俊 F# September 2008 CTP Base.
0からわかるF# Part1 中 博俊 F# September 2008 CTP Base.
図書館職員のための アプリケーション開発講習会
暗黙的に型付けされる構造体の Java言語への導入
50年前のプログラミング言語 50年後のプログラミング言語
0からわかるF# Part1 中 博俊 F# September 2008 CTP Base.
ソフトウェア情報学総論 基盤ソフトウェア学講座
0からわかるF# Part1 中 博俊 F# September 2008 CTP Base.
平成30年度高知工科大学教職科目 微分方程式特論I 11 高知大学教育学部技術教育コース 北川 晃.
お仕事にまったく役にたたない内容のコードレビューやりたいと思います。
社会シミュレーションのための モデル作成環境
JAVAについて 高橋 雅哉.
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
多種多様なプログラミング言語        チーム名  まほうびん 情報数学5 まほうびん 2019/04/08.
Fortranについて 高エネルギー加速器研究機構 平山 英夫.
0からわかるF# Part1 中 博俊 F# September 2008 CTP Base.
アスペクト指向言語のための 独立性の高いパッケージシステム
0からわかるF# Part1 中 博俊 F# September 2008 CTP Base.
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
先週の復習: CPU が働く仕組み コンピュータの構造 pp 制御装置+演算装置+レジスタ 制御装置がなければ電卓と同様
コンパイラ 2012年10月1日
ソフトウェア工学 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
自然言語処理2015 Natural Language Processing 2015
~sumii/class/proenb2009/ml6/
第6回放送授業.
情報数学Ⅲ 5,6 (コンピュータおよび情報処理)
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第二回 知能情報学部 新田直也.
コンパイラ 2012年10月11日
ソフトウェア工学 知能情報学部 新田直也.
知識ベースの試作計画 ●●●研究所 ●●●技術部 稲本□□ 1997年1月.
オブジェクト指向言語論 第一回 知能情報学部 新田直也.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
自然言語処理2016 Natural Language Processing 2016
ニシキヘビの飼い方 Pierrot.
ニシキヘビの飼い方 Pierrot.
1.2 言語処理の諸観点 (1)言語処理の利用分野
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
プログラミング言語Ⅰ(実習を含む。), 計算機言語Ⅰ・計算機言語演習Ⅰ, 情報処理言語Ⅰ(実習を含む。)
Presentation transcript:

LLで関数プログラミング @LLRing

青木 峰郎 日本Rubyの会 主著 ふつうのLinuxプログラミング ふつうのHaskellプログラミング 関数型言語は勉強としてつかうだけ

住井 英二郎 東北大学 ICFPプログラミングコンテスト MinCaml 日常のプログラムは全てOCaml 教員だけど気分は学生(試験のとき以外…) 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 無限リストも使えます 関数合成も使えます 今までどおりのテクニックを使いながら関数型も使いたい人には便利