プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML...

105
ML 系言語の現状と課題 SML]:概要 SML]:実装と理論 SML]:ツール SML]FAQ 雑感,檄文,研究ねた プログラミング言語 SML]の開発とその基礎理論 多相型言語の基礎研究はもはや時代遅れか ?— 大堀 淳 http://www.pllab.riec.tohoku.ac.jp/˜ ohori/ 東北大学 電気通信研究所 ソフトウエア科学会大会招待講演 2006 9 14 プログラミング言語 SML]の開発とその基礎理論 1 / 77

Transcript of プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML...

Page 1: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

プログラミング言語 SML]の開発とその基礎理論—多相型言語の基礎研究はもはや時代遅れか ? —

大堀淳http://www.pllab.riec.tohoku.ac.jp/˜ohori/

東北大学電気通信研究所

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 1 / 77

Page 2: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

本スライドをご覧になる方へこのスライドは,招待講演用の補助資料として作成したものです.その性格上,学術文書の基準でみますと,ややくだけた口語的な表現が含まれています.これらを通じた私の唯一の意図は,プログラミングの理論と実践の研究のおもしろさをお伝えできれば,というものです.その主旨をご理解頂ければ幸です.

本スライドでは,「ハッキング(ハッカー)」と言う用語を,語本来の「創造的プログラミング(プログラマ)」という意味で使用しています.巧みなコーディングもその要素ですが,より広く,「種々の先端的な基礎理論や技術を駆使した創造的プログラミング」を意図して使用しています.

「SML#の実用的側面」(PPL2007招待講演,2007年 3月,後日公開予定)も合わせてご参照頂ければ幸です.なお,この機会に,本スライドの誤字等を修正しました.

2007年 2月 18日大堀淳ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 2 / 77

Page 3: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

今日のタイトルを考える前に,まず 1992年の関連深いタイトルの再考:

本物のプログラマはMLを使うようになる - か?(1992年ソフトウエア科学会大会チュートリアル)

• 1992年:公式の答え もちろん!答えが yesでなくて,この問を発す

るはずがない.一般の反応 MLなど知らないが,おもしろそう.

• 2006年公式の答え 未だし.一般の反応 MLなど役に立たないし.必要ない.

本当の答え? 本当のプログラマはいなくなりつつある?

プログラムよりコンテンツ生産が重要?プログラミングはWebページを書くこと?

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 3 / 77

Page 4: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

今日のタイトルを考える前に,まず 1992年の関連深いタイトルの再考:

本物のプログラマはMLを使うようになる - か?(1992年ソフトウエア科学会大会チュートリアル)

• 1992年:公式の答え もちろん!答えが yesでなくて,この問を発す

るはずがない.一般の反応 MLなど知らないが,おもしろそう.

• 2006年公式の答え 未だし.一般の反応 MLなど役に立たないし.必要ない.

本当の答え? 本当のプログラマはいなくなりつつある?

プログラムよりコンテンツ生産が重要?プログラミングはWebページを書くこと?

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 3 / 77

Page 5: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

今日のタイトルを考える前に,まず 1992年の関連深いタイトルの再考:

本物のプログラマはMLを使うようになる - か?(1992年ソフトウエア科学会大会チュートリアル)

• 1992年:公式の答え もちろん!答えが yesでなくて,この問を発す

るはずがない.一般の反応 MLなど知らないが,おもしろそう.

• 2006年公式の答え 未だし.一般の反応 MLなど役に立たないし.必要ない.

本当の答え? 本当のプログラマはいなくなりつつある?

プログラムよりコンテンツ生産が重要?プログラミングはWebページを書くこと?

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 3 / 77

Page 6: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

今日のタイトルを考える前に,まず 1992年の関連深いタイトルの再考:

本物のプログラマはMLを使うようになる - か?(1992年ソフトウエア科学会大会チュートリアル)

• 1992年:公式の答え もちろん!答えが yesでなくて,この問を発す

るはずがない.一般の反応 MLなど知らないが,おもしろそう.

• 2006年公式の答え 未だし.一般の反応 MLなど役に立たないし.必要ない.

本当の答え? 本当のプログラマはいなくなりつつある?

プログラムよりコンテンツ生産が重要?プログラミングはWebページを書くこと?

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 3 / 77

Page 7: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

•多相型言語の基礎研究はもはや時代遅れか?•あるいは,その多くの課題は解決をみたか?公式の答え:

• ML系多相型言語は,高信頼・高安全システム実現の鍵

• その実用化には,多くの課題が残る.今こそ,新しいML系言語を開発し実用化すべき時

個人的な感想:

• これまでの研究はまだまだ未完成.これまでの研究上の主張に責任をとる必要がある.

• 多相型言語の基礎研究とハッキング(創造的プログラミング)ほど楽しいものはない.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 4 / 77

Page 8: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

•多相型言語の基礎研究はもはや時代遅れか?•あるいは,その多くの課題は解決をみたか?公式の答え:

• ML系多相型言語は,高信頼・高安全システム実現の鍵

• その実用化には,多くの課題が残る.今こそ,新しいML系言語を開発し実用化すべき時

個人的な感想:

• これまでの研究はまだまだ未完成.これまでの研究上の主張に責任をとる必要がある.

• 多相型言語の基礎研究とハッキング(創造的プログラミング)ほど楽しいものはない.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 4 / 77

Page 9: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

本講演の目的

本講演は,我々が行っているML系多相型プログラミング言語 SML]のコンパイラの開発とそのための基礎理論研究の地味な現状報告である.それに加え,それらを通じて感じる,最近のソフトウエア科学が目指す先端性,或は,ファッショナブルである条件なども考えてみたい.

その正確な意図は,

多相型言語の基礎研究とハッキングの楽しさに共感する同志を増やすこと

或は,

共感しうる(気持はまだまだ)若手への檄文

これは,最後にまわして,まず技術的な話から...

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 5 / 77

Page 10: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

講演内容

ML系言語の現状と課題

SML]:概要

SML]:実装と理論

SML]:ツール

SML]:FAQ

雑感,檄文,研究ねた

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 6 / 77

Page 11: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

ML 系言語の特徴

ML系言語の特徴MLは

• 高い信頼性

(言わずとしれた型推論の恩恵)多相型型推論は,唯一実用化された万人向け検証ツール.

• 高い安全性

(メモリーの不正アクセスなど起こり得ない)バッファオーバフローなど,そのそもトピックですらない.

• 高い生産性

(書いてみればわかる)

を実現する,現存する最も優れたプログラミング言語の一つ.

詳しくは,1992年の JSSSTチュートリアルの時書き下したテキストを基にした教科書「プログラミング言語 Standard ML入門」参照.

MLを使いさえすれば,これらが総て手に入る...

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 7 / 77

Page 12: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

ML 系言語の特徴

ML系言語の特徴MLは

• 高い信頼性(言わずとしれた型推論の恩恵)多相型型推論は,唯一実用化された万人向け検証ツール.

• 高い安全性

(メモリーの不正アクセスなど起こり得ない)バッファオーバフローなど,そのそもトピックですらない.

• 高い生産性

(書いてみればわかる)

を実現する,現存する最も優れたプログラミング言語の一つ.

詳しくは,1992年の JSSSTチュートリアルの時書き下したテキストを基にした教科書「プログラミング言語 Standard ML入門」参照.

MLを使いさえすれば,これらが総て手に入る...

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 7 / 77

Page 13: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

ML 系言語の特徴

ML系言語の特徴MLは

• 高い信頼性(言わずとしれた型推論の恩恵)多相型型推論は,唯一実用化された万人向け検証ツール.

• 高い安全性(メモリーの不正アクセスなど起こり得ない)バッファオーバフローなど,そのそもトピックですらない.

• 高い生産性

(書いてみればわかる)

を実現する,現存する最も優れたプログラミング言語の一つ.

詳しくは,1992年の JSSSTチュートリアルの時書き下したテキストを基にした教科書「プログラミング言語 Standard ML入門」参照.

MLを使いさえすれば,これらが総て手に入る...

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 7 / 77

Page 14: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

ML 系言語の特徴

ML系言語の特徴MLは

• 高い信頼性(言わずとしれた型推論の恩恵)多相型型推論は,唯一実用化された万人向け検証ツール.

• 高い安全性(メモリーの不正アクセスなど起こり得ない)バッファオーバフローなど,そのそもトピックですらない.

• 高い生産性(書いてみればわかる)

を実現する,現存する最も優れたプログラミング言語の一つ.

詳しくは,1992年の JSSSTチュートリアルの時書き下したテキストを基にした教科書「プログラミング言語 Standard ML入門」参照.

MLを使いさえすれば,これらが総て手に入る...

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 7 / 77

Page 15: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

ML 系言語の特徴

ML系言語の特徴MLは

• 高い信頼性(言わずとしれた型推論の恩恵)多相型型推論は,唯一実用化された万人向け検証ツール.

• 高い安全性(メモリーの不正アクセスなど起こり得ない)バッファオーバフローなど,そのそもトピックですらない.

• 高い生産性(書いてみればわかる)

を実現する,現存する最も優れたプログラミング言語の一つ.

詳しくは,1992年の JSSSTチュートリアルの時書き下したテキストを基にした教科書「プログラミング言語 Standard ML入門」参照.

MLを使いさえすれば,これらが総て手に入る...

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 7 / 77

Page 16: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

ML 系言語の問題点

ML系言語の問題点にも関わらず,MLは産業界の実装言語の一つになり得ていない.

歴史的,文化的な弱点もあるかもしれない,...

• 関数型言語なのでよく分からない?(関数型言語でも?)• 理論に基づいていて使用が難しい?(そんなバカな?)

しかし,より根本的問題は,以下のような技術的に深刻な問題が放置されている点にある

• C等の既存言語との相互運用性の欠如

• 柔軟性に欠く型システム• DB,OOと連携を欠く.

• 基本的なツールの欠如• 柔軟で強力な多バイト文字サポートの欠如

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 8 / 77

Page 17: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

ML 系言語の問題点

MLの問題点:C等の既存言語との相互運用性の欠如(MLを含む)関数型言語業界の驚くべき「常識」

1.整数には 1ビットのタグを付けるこれに関する “ML研究者”(M)と一般ユーザー(C)の対話.

M MLでは,整数データにはコンパイラが識別のためタグを付けます.

C コンパイラがどこかに識別データを置くのはかまいませんが.

M いえ,機械語の 1語の中に付けるのです.ですから整数はそのまま使えません.

C 構造体やリストなどのデータは大丈夫ですね.

M いえ,だめです.実はそこが肝心のところです.

C 32ビット整数が必要なので別の言語を考えてみます....

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 9 / 77

Page 18: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

ML 系言語の問題点

MLの問題点:C等の既存言語との相互運用性の欠如(MLを含む)関数型言語業界の驚くべき「常識」

1.整数には 1ビットのタグを付けるこれに関する “ML研究者”(M)と一般ユーザー(C)の対話.

M MLでは,整数データにはコンパイラが識別のためタグを付けます.

C コンパイラがどこかに識別データを置くのはかまいませんが.

M いえ,機械語の 1語の中に付けるのです.ですから整数はそのまま使えません.

C 構造体やリストなどのデータは大丈夫ですね.

M いえ,だめです.実はそこが肝心のところです.

C 32ビット整数が必要なので別の言語を考えてみます....

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 9 / 77

Page 19: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

ML 系言語の問題点

MLの問題点:C等の既存言語との相互運用性の欠如(MLを含む)関数型言語業界の驚くべき「常識」

1.整数には 1ビットのタグを付けるこれに関する “ML研究者”(M)と一般ユーザー(C)の対話.

M MLでは,整数データにはコンパイラが識別のためタグを付けます.

C コンパイラがどこかに識別データを置くのはかまいませんが.

M いえ,機械語の 1語の中に付けるのです.ですから整数はそのまま使えません.

C 構造体やリストなどのデータは大丈夫ですね.

M いえ,だめです.実はそこが肝心のところです.

C 32ビット整数が必要なので別の言語を考えてみます....

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 9 / 77

Page 20: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

ML 系言語の問題点

MLの問題点:C等の既存言語との相互運用性の欠如(MLを含む)関数型言語業界の驚くべき「常識」

1.整数には 1ビットのタグを付けるこれに関する “ML研究者”(M)と一般ユーザー(C)の対話.

M MLでは,整数データにはコンパイラが識別のためタグを付けます.

C コンパイラがどこかに識別データを置くのはかまいませんが.

M いえ,機械語の 1語の中に付けるのです.ですから整数はそのまま使えません.

C 構造体やリストなどのデータは大丈夫ですね.

M いえ,だめです.実はそこが肝心のところです.

C 32ビット整数が必要なので別の言語を考えてみます....

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 9 / 77

Page 21: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

ML 系言語の問題点

MLの問題点:C等の既存言語との相互運用性の欠如(MLを含む)関数型言語業界の驚くべき「常識」

1.整数には 1ビットのタグを付けるこれに関する “ML研究者”(M)と一般ユーザー(C)の対話.

M MLでは,整数データにはコンパイラが識別のためタグを付けます.

C コンパイラがどこかに識別データを置くのはかまいませんが.

M いえ,機械語の 1語の中に付けるのです.ですから整数はそのまま使えません.

C 構造体やリストなどのデータは大丈夫ですね.

M いえ,だめです.実はそこが肝心のところです.

C 32ビット整数が必要なので別の言語を考えてみます....

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 9 / 77

Page 22: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

ML 系言語の問題点

MLの問題点:C等の既存言語との相互運用性の欠如(MLを含む)関数型言語業界の驚くべき「常識」

1.整数には 1ビットのタグを付けるこれに関する “ML研究者”(M)と一般ユーザー(C)の対話.

M MLでは,整数データにはコンパイラが識別のためタグを付けます.

C コンパイラがどこかに識別データを置くのはかまいませんが.

M いえ,機械語の 1語の中に付けるのです.ですから整数はそのまま使えません.

C 構造体やリストなどのデータは大丈夫ですね.

M いえ,だめです.実はそこが肝心のところです.

C 32ビット整数が必要なので別の言語を考えてみます....

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 9 / 77

Page 23: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

ML 系言語の問題点

MLの問題点:C等の既存言語との相互運用性の欠如(MLを含む)関数型言語業界の驚くべき「常識」

1.整数には 1ビットのタグを付けるこれに関する “ML研究者”(M)と一般ユーザー(C)の対話.

M MLでは,整数データにはコンパイラが識別のためタグを付けます.

C コンパイラがどこかに識別データを置くのはかまいませんが.

M いえ,機械語の 1語の中に付けるのです.ですから整数はそのまま使えません.

C 構造体やリストなどのデータは大丈夫ですね.

M いえ,だめです.実はそこが肝心のところです.

C 32ビット整数が必要なので別の言語を考えてみます....

残念ながら,これは冗談ではない.ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 9 / 77

Page 24: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

ML 系言語の問題点

MLの問題点:C等の既存言語との相互運用性の欠如(関数型言語を含む)ML業界の驚くべき「常識」

2.浮動小数点データはすべてヒープアロケートする

C 変数へ格納するのは?

M ヒープへのポインターのみ可能です.

C (ヒープ上の)構造体や配列には入れられますね.

M これもポインターだけです.でも,ポインター操作は自動的に行われますが.

C うわさにたがわず toy言語だ!

M 関数型言語の美しさを分かっていないやつだ!

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 10 / 77

Page 25: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

ML 系言語の問題点

MLの問題点:C等の既存言語との相互運用性の欠如(関数型言語を含む)ML業界の驚くべき「常識」

2.浮動小数点データはすべてヒープアロケートする

C 変数へ格納するのは?

M ヒープへのポインターのみ可能です.

C (ヒープ上の)構造体や配列には入れられますね.

M これもポインターだけです.でも,ポインター操作は自動的に行われますが.

C うわさにたがわず toy言語だ!

M 関数型言語の美しさを分かっていないやつだ!

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 10 / 77

Page 26: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

ML 系言語の問題点

MLの問題点:C等の既存言語との相互運用性の欠如(関数型言語を含む)ML業界の驚くべき「常識」

2.浮動小数点データはすべてヒープアロケートする

C 変数へ格納するのは?

M ヒープへのポインターのみ可能です.

C (ヒープ上の)構造体や配列には入れられますね.

M これもポインターだけです.でも,ポインター操作は自動的に行われますが.

C うわさにたがわず toy言語だ!

M 関数型言語の美しさを分かっていないやつだ!

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 10 / 77

Page 27: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

ML 系言語の問題点

MLの問題点:C等の既存言語との相互運用性の欠如(関数型言語を含む)ML業界の驚くべき「常識」

2.浮動小数点データはすべてヒープアロケートする

C 変数へ格納するのは?

M ヒープへのポインターのみ可能です.

C (ヒープ上の)構造体や配列には入れられますね.

M これもポインターだけです.でも,ポインター操作は自動的に行われますが.

C うわさにたがわず toy言語だ!

M 関数型言語の美しさを分かっていないやつだ!

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 10 / 77

Page 28: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

ML 系言語の問題点

MLの問題点:C等の既存言語との相互運用性の欠如(関数型言語を含む)ML業界の驚くべき「常識」

2.浮動小数点データはすべてヒープアロケートする

C 変数へ格納するのは?

M ヒープへのポインターのみ可能です.

C (ヒープ上の)構造体や配列には入れられますね.

M これもポインターだけです.でも,ポインター操作は自動的に行われますが.

C うわさにたがわず toy言語だ!

M 関数型言語の美しさを分かっていないやつだ!

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 10 / 77

Page 29: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

ML 系言語の問題点

MLの問題点:C等の既存言語との相互運用性の欠如(関数型言語を含む)ML業界の驚くべき「常識」

2.浮動小数点データはすべてヒープアロケートする

C 変数へ格納するのは?

M ヒープへのポインターのみ可能です.

C (ヒープ上の)構造体や配列には入れられますね.

M これもポインターだけです.でも,ポインター操作は自動的に行われますが.

もちろん,これも冗談ではない.

C うわさにたがわず toy言語だ!

M 関数型言語の美しさを分かっていないやつだ!

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 10 / 77

Page 30: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

ML 系言語の問題点

MLの問題点:C等の既存言語との相互運用性の欠如(関数型言語を含む)ML業界の驚くべき「常識」

2.浮動小数点データはすべてヒープアロケートする

C 変数へ格納するのは?

M ヒープへのポインターのみ可能です.

C (ヒープ上の)構造体や配列には入れられますね.

M これもポインターだけです.でも,ポインター操作は自動的に行われますが.

もちろん,これも冗談ではない.

これらの「常識」は支持されるものだろうか?C うわさにたがわず toy言語だ!M 関数型言語の美しさを分かっていないやつだ!どちらにがより妥当かは明白と思われる.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 10 / 77

Page 31: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

ML 系言語の問題点

MLの問題点:柔軟性に欠く型システムレコードさえまともに扱えない

- fun f x = #name x;stdIn:17.1-17.18 Error: unresolved flex record(can’t tell what fields there are besides #name)

これはまだ良い方.(e.g OCaml)

レコードは最も基本的な構造.その完全にサポートは必須!

クロネッカーに習えば,レコードは神代の昔から存在する.他のデータ構造は総てレコードと原子データ型から産み出された.

• データ型,バリアント,...• モジュール,オブジェクト,...

等はその派生概念であり,いはば(有用な)オプション.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 11 / 77

Page 32: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

ML 系言語の問題点

MLの問題点:柔軟性に欠く型システムレコードさえまともに扱えない

- fun f x = #name x;stdIn:17.1-17.18 Error: unresolved flex record(can’t tell what fields there are besides #name)

これはまだ良い方.(e.g OCaml)

レコードは最も基本的な構造.その完全にサポートは必須!

クロネッカーに習えば,レコードは神代の昔から存在する.他のデータ構造は総てレコードと原子データ型から産み出された.

• データ型,バリアント,...• モジュール,オブジェクト,...

等はその派生概念であり,いはば(有用な)オプション.ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 11 / 77

Page 33: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

ML 系言語の問題点

MLの問題点:柔軟性に欠く型システム(続き)「値多相性」という訳の分からぬ制約

- fun f x y = (x,y);val f = fn : ’a -> ’b -> ’a * ’b- f 1;Warning: type vars not generalized because of value restriction .....val it = fn : ?.X1 -> int * ?.X1- it 2;Error: operator and operand don’t agree [literal]

しかし,型理論の教科書によれは,

∅ ` let f = λx.y.(x,y) in let it = f 1 in it 2 : int ∗ int

のはずではないか.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 12 / 77

Page 34: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

ML 系言語の問題点

MLの問題点:その他

MLの問題点:基本的なツールの欠如

• ドキュメント生成ツール• データ清書ツール• 等々

DB,OOと連携を欠く.データベースを扱わない実用的なアプリケーションは少ない.

多バイト文字サポーの欠如MLの標準ライブラリの定義には多バイト文字の操作は含まれていない.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 13 / 77

Page 35: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

SML]プロジェクト

(MLを愛する研究者/開発者/ Hacker(*)である)我々はソフトウェア生産用言語の選択肢となりうるMLを開発すべきと考える.

SML]プロジェクト文部科学省プロジェクト

e-Society基盤ソフトウェアの総合開発「プログラムの自動解析に基づく高信頼ソフトウェア構築技術」

の2つの主な目的の一つ:1. 次世代高信頼言語の開発⇐= SML]東北大学/ JAIST大堀研究室,算譜工房(有)と共同で実施

2. 次世代高信頼プログラミング環境の構築東北大学/ JAIST大堀研究室,沖電気(株),算譜工房 (有)と共同で実施

平成 15年度から平成 19年度までの 5年間のプロジェクト(*) A person with an enthusiasm for programming or using computers as an end

in itself.ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 14 / 77

Page 36: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

共同研究開発者

SML]共同研究開発者SML]の開発チーム(過去の開発者を含む):• 大堀淳(東北大学電気通信研究所)• 大和谷潔(算譜工房)• Nguen Duc Huu(東北大学電気通信研究所)• Liu Bochao(JAIST)• 纓坂智(JAIST)• 上野雄大(東北大学電気通信研究所)

さらに,他の以下の方々との共同研究の成果を含む.• 篠埜功• 松野裕• Kwanghoon Choi• 樋口智之• 吉田信明,• 高見沢友伸• Peter Buneman

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 15 / 77

Page 37: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

講演内容

ML系言語の現状と課題

SML]:概要

SML]:実装と理論

SML]:ツール

SML]:FAQ

雑感,檄文,研究ねた

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 16 / 77

Page 38: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

SML]が目指すもの

SML]が目指すもの

高信頼かつスケーラブルな多相型プログラミング言語

• 型理論に基づく高信頼言語• Standard MLを包摂する ML系言語• (我々の)型理論の基礎研究成果を取り入れた高性能言語• 型主導コンパイルによる高性能実装

(新しい拡張部分は)すべて自前の理論と技術を用いて,スクラッチから作る新しい言語

• 実用的でスケーラブルな言語• Cおよび JAVAとの相互運用性• 豊富なプログラミングツール• 多言語環境下の分割コンパイルとリンク• DB,OOと関数型言語との統合

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 17 / 77

Page 39: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

SML]の特徴

SML]の特徴 I

最先端の型システム

• 多相型レコード演算(X)• ランク1多相性による値多相制約の緩和(X)

高い相互運用性

• C言語との動的リンク(X)• 分割コンパイルとリンク• レコード多相を通じた JAVAとの連携

• レコード多相を通じた SQLとの連携

(X) : 実装済

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 18 / 77

Page 40: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

SML]の特徴

SML]の特徴 II型主導コンパイルによる効率よい実装

• 多相型レコード演算のコンパイル(X)• 関数のループへのコンパイル• 論理学に基づくコード最適化

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 19 / 77

Page 41: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

特徴:最先端の型システム

特徴:多相型レコードのサポート I• フィールドアクセス演算# #name;val it = fn : [’a,’b#{name:’a}.’b -> ’a]# it {name = "JSSST06", no = 23}val it = "JSSST06" : string

• レコードのフィールド変更演算# fun incrementAge x = x # {age = #age x + 1};val incrementAge = fn : [’a#{age:int} .’a -> ’a]# incrementAge {name = "dola", age =21};val it = {age = 22, name = "dola"}

: {age:int , name:string}

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 20 / 77

Page 42: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

特徴:最先端の型システム

特徴:多相型レコードのサポート II• フレキシブルレコードパターン# fun f {name,...} = name;val f = fn : [’a,’b#{name:’a}.’b -> ’a]# fun f x =

letval {name, ...} = x

inname

end;val f = fn : [’a,’b#{name:’a}.’b -> ’a]# fun f (x as {age,...}) = x # {age = age + 1};val f = fn : [’a#{age:int} .’a -> ’a]

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 21 / 77

Page 43: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

特徴:最先端の型システム

特徴:ランク1多相性 IMLの型をランク1型に拡張

τ ::= t | τ → τ | τ×τ | τ+τσ ::= τ | ∀T.σ | τ → σ | σ×σ

# fun f x y = (x,y);val f = fn : [’a .’a -> [’b .’b -> ’a * ’b]]# f 1;val it = fn : [’a .’a -> int * ’a]]# it 2;val it = ( 1 , 2 ) : int * int

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 22 / 77

Page 44: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

特徴:最先端の型システム

特徴:ランク1多相性 IIこれにより,

• 値多相性制約の弊害を大幅に改善できる.# val g = ((fn x => x) 1,

fn x => fn y => (x + 1,ref y));val g = (1, fn) : int*(int -> [’a.’a -> int*’a ref])# val h = (#2 g) 1;val h = fn : [’a .’a -> int * ’a ref]

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 23 / 77

Page 45: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

特徴:最先端の型システム

特徴:ランク1多相性 III• 型推論の大幅なスピードアップが見込める.以下のようなコードは,従来は指数関数時間かかっていた.

letval a = (fn x => x, fn y => y)val a = (a, a) val a = (a, a) val a = (a, a)....val a = (a, a) val a = (a, a) val a = (a, a)val a = (a, a) val a = (a, a) val a = (a, a)

in#1 (#1 (#1 (#1 .... )))))) 1

end;: int * int

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 24 / 77

Page 46: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

特徴:高い相互運用性

特徴:自然なメモリー表現 ISML]でのメモリー表現• 整数等の原子データ:機械でサポートされる自然な表現もちろん,レコードや配列などに自由に格納できる.

• 浮動小数点データ:機械でサポートされる自然な表現もちろん,第一級のデータ.• 変数への格納• 関数への引数,戻り値• 構造体や配列のメンバー

等にそのまま格納される.したがって,

# fun area c = Math.pi * Math.sqrt (#r c);val area = fn : [’a#r:real .’a -> real]# area {r = 3.5, x = 12.3, y = 1.1};val it = 6.20359 : real

などが,C同様 doubleのままで実行される.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 25 / 77

Page 47: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

特徴:高い相互運用性

特徴:自然なメモリー表現 II• レコード:ビットマップ付きヒープブロック

GC

i

i

j

j

n

0 1 1

GC KIND

Layout Bitmap

non pointer data

non pointer data

SIZE

non pointer data

0 0

Object n

関数型言語の驚くべき「常識」に不馴れな方への補足• そう,これらは,あまりに当たり前のデータ表現.• この当たり前のことが実現されていなかったのが,(Stadard

ML of New Jersey,OCaml等を含む)関数型言語.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 26 / 77

Page 48: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

特徴:高い相互運用性

特徴:自然なメモリー表現 II• レコード:ビットマップ付きヒープブロック

GC

i

i

j

j

n

0 1 1

GC KIND

Layout Bitmap

non pointer data

non pointer data

SIZE

non pointer data

0 0

Object n

関数型言語の驚くべき「常識」に不馴れな方への補足• そう,これらは,あまりに当たり前のデータ表現.• この当たり前のことが実現されていなかったのが,(Stadard

ML of New Jersey,OCaml等を含む)関数型言語.ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 26 / 77

Page 49: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

特徴:高い相互運用性

特徴:自然なメモリー表現 IIIこれにより,

• 他言語との相互運用がが可能• Cとの動的(実現済,次の項目),静的リンク• JAVAや SQLとの連携

• 効率よいトレーシング相互運用GCが可能

• 高速なコンパイルが実現できる.整数や浮動小数点操作に,余分なビット処理や,ヒープへのアクセス,ヒープブロックの作成などの操作は不要.(当然)

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 27 / 77

Page 50: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

特徴:高い相互運用性

特徴:C等の外部関数との動的リンク機能 I外部関数の動的束縛式が用意されている.

_external "fName" of "lName" : {ty,. . .,ty} -> ty

• "lName" : DLL名

• "fName":DLL内の関数名

• {ty,. . .,ty} -> ty:"fName"の型• tyには,各原子型,タプル,ポインタ型を許す.

多引数関数の場合は,SML]内ではプリミティブ演算と同様の扱いがなされ,高速な呼び出しシーケンスを実現.注:

• +(1,2):スタック上の on the flyなプリミティブコール

• f +:+はこの時点で fn x => +(x[1], x[2])と変換される.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 28 / 77

Page 51: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

特徴:高い相互運用性

特徴:C等の外部関数との動的リンク機能 IIユーザは,SML]から任意の Cの関数を,単に以下の手順で呼び出せばよい.

1. Cの関数をコンパイルし,DLLライブラリに登録

2. SML]で関数名,ライブラリ名,型を宣言

3. 通常の SML]関数と同様に使用.

SML]の算術演算ライブラリなどは,この C関数を呼び出しインターフェイスを通じて実現している.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 29 / 77

Page 52: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

型主導の効率的コンパイル

特徴:レコード演算の効率よいコンパイル多相型レコードコンパイル(型主導コンパイルの最初のもの)

# fun makeOpening {name = "Peter", ...} = "Hi, Peter"| makeOpening {name, ...} = "Dear Mr./Ms." ˆ name;

Record compiled to:val makeOpening =

[ ’a#{name:string}.(fn (($239:index(’a,name)), ($233:’a))=>

bind ($238:string) = $233[$239]in (switch $238 of

"Peter" => "Hi, Peter"| _ => "Dear Mr./Ms." ˆ $238

end) ]val makeOpening = fn : [’a#{name:string}.’a -> string]

これは SML]しか生成し得ない最適なコードソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 30 / 77

Page 53: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

型主導の効率的コンパイル

特徴:浮動小数点の効率よいコンパイル浮動小数点は,変数へのバインド,レコードへの格納,関数間の受け渡し,すべてその自然な表現でなされ,ヒープブロックの生成やポインターからの取りだしなどの無駄な操作は一切介在しない.関数 fun area c = Math.pi * Math.sqrt (#r c)の本体部分のコンパイル結果

V71 = GetGlobalDouble(0x2, 0x1e)V72 = GetGlobalPointer(0x0, 0x3cb )V74 = WordLogicalRightShiftConst(V64 , 0x10)V76 = WordAndConst(V64 , 0xff)V77 = GetNestedFieldIndirectDouble (V74, V76, V61)V79 = ApplyDouble (V72, V77)V85 = MulReal (V71,V79)

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 31 / 77

Page 54: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

現状と今後の予定

開発状況と今後の予定α版を SML]ホームページで公開中

英語:http://www.pllab.riec.tohoku.ac.jp/smlsharp/日本語:http://www.pllab.riec.tohoku.ac.jp/smlsharp/ja/

ぜひお試しください.

今後の開発予定

• 多バイト文字処理機能• 分割コンパイル• ネィティブコードコンパイラ• JAVAとの相互運用型拡張,実行時拡張

• SQL連携ミドルウエア

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 32 / 77

Page 55: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

講演内容

ML系言語の現状と課題

SML]:概要

SML]:実装と理論

SML]:ツール

SML]:FAQ

雑感,檄文,研究ねた

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 33 / 77

Page 56: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

SML]コンパイラの構造

SML]コンパイラの構造

1. 構文解析

2. 派生構文の展開

3. 関数定義の最適化

4. ユーザ定義型変数の解釈

5. 型推論

6. Uncurry変換

7. プリントコード生成

8. モジュールコンパイル

9. マッチングコンパイル

10. 多相型レコードコンパイル

11. ビットマップ/Closure変換

12. A-Normal変換

13. A-Normal最適化

14. 抽象コードへの変換

15. 抽象コード最適化

16. アセンブル

色付きの部分は,新たな基礎理論構築を必要としたステップ.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 34 / 77

Page 57: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

SML]コンパイラの構造

SML]の開発のために構築した理論 (実装済)レコード多相とそのコンパイル理論

• A. Ohori and P. Buneman. Type Inference in a DatabaseProgramming Language, ACM Lisp & Func. Prog. 1988.

• A. Ohori, A Polymoprhic Record Calculus and Its Compilation,ACM TOPLAS 1995.

ランク1多相性の型理論とコンパイル

• A. Ohori and N. Yoshida. Type Infernece with Rank 1Polymorphism for Type-Directed Compilation of ML. ACMICFP, 1999.

型主導のパターンマッチングコンパイル方式

• 大堀,纓坂.表示的意味論に基づくパターンマッチングコンパイル方式の構築と実装.コンピュータソフトウエアに採録決定.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 35 / 77

Page 58: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

SML]コンパイラの構造

自然なデータ表現と相互運用GC

• A. Ohori and T. Takamizawa. An Unboxed OperationalSemantics for ML Polymorphism. J. Lisp and SymbolicComput. 1997.

• Huu-Duc Nguyen and Atsushi Ohori. A practical compilationmethod for unboxed data (仮題). In preparation.

• Huu-Duc Nguyen and Atsushi Ohori Compiling MLPolymorphism with Explicit Layout Bitmap. ACM PPDP 2006.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 36 / 77

Page 59: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

SML]コンパイラの構造

SML]の開発のために構築した理論(実装中・予定)JAVAクラスとの相互運用性

• A. Ohori and K. Yamatodani. An interoperable calculus forexternal object access. ACM ICFP, 2002.

データベースと多相型言語との融合

• A. Ohori and P. Buneman. Type Inference in a DatabaseProgramming Language. ACM Lisp & Func. Prog, 1988.

• P. Buneman and A. Ohori, Polymorphism and Type Inferencein Database Programming, ACM TODS, 1996.

コードの証明論に基づく系統的なコード生成

• A. Ohori. A Proof Theory for Machine Code. (Submitted)

相互運用にともなうコードの権限チェック

• T. Higuchi and A. Ohori. A Static Type System for JVM AccessControl. ACM TOPLAS, 2007.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 37 / 77

Page 60: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

SML]コンパイラの構造

コードの証明論の考え方を基礎とする静的 SSA表現

• Y. Matsuno and A. Ohori. A Type System Equivalent to StaticSingle Assignment. ACM PPDP Conference, 2006.

新しい考え方に基づく簡便で実用的な関数融合方式

• A. Ohori and I. Sasano Lightweight Fusion by FixedpointPromotion. ACM POPL, 2007.

There is no sliver bullet!

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 38 / 77

Page 61: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

SML]コンパイラの構造

コードの証明論の考え方を基礎とする静的 SSA表現

• Y. Matsuno and A. Ohori. A Type System Equivalent to StaticSingle Assignment. ACM PPDP Conference, 2006.

新しい考え方に基づく簡便で実用的な関数融合方式

• A. Ohori and I. Sasano Lightweight Fusion by FixedpointPromotion. ACM POPL, 2007.

There is no sliver bullet!

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 38 / 77

Page 62: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

SML]の基礎理論構築例

実装方式とその基礎理論構築例:自然なデータ表現基本的なアイデア:

A. Ohori and T. Takamizawa. An Unboxed OperationalSemantics for ML Polymorphism. J. Lisp and SymbolicComput. 1997.

(The conference version of this paperhad been rejected everywhere.)

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 39 / 77

Page 63: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

SML]の基礎理論構築例

実装方式とその基礎理論構築例:自然なデータ表現基本的なアイデア:

A. Ohori and T. Takamizawa. An Unboxed OperationalSemantics for ML Polymorphism. J. Lisp and SymbolicComput. 1997. (The conference version of this paperhad been rejected everywhere.)

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 39 / 77

Page 64: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

SML]の基礎理論構築例

実装方式とその基礎理論構築例:自然なデータ表現基本的なアイデア:

A. Ohori and T. Takamizawa. An Unboxed OperationalSemantics for ML Polymorphism. J. Lisp and SymbolicComput. 1997. (The conference version of this paperhad been rejected everywhere.)

理由

• 「そんなものは実用になるわけがない.」(まともな理由)GCの方式が全く不明であり,この時点で,この refereeは(何回も)全く正しい.

しかし,実現できない/しない/されない,理論の論文が大半を占めるのも事実.

• 「自分達の仕事の方がよい,」「我々の仕事の引用の仕方がなっていない.」(通常の理由)

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 39 / 77

Page 65: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

SML]の基礎理論構築例

実装方式とその基礎理論構築例:自然なデータ表現基本的なアイデア:

A. Ohori and T. Takamizawa. An Unboxed OperationalSemantics for ML Polymorphism. J. Lisp and SymbolicComput. 1997. (The conference version of this paperhad been rejected everywhere.)

理由

• 「そんなものは実用になるわけがない.」(まともな理由)GCの方式が全く不明であり,この時点で,この refereeは(何回も)全く正しい.

しかし,実現できない/しない/されない,理論の論文が大半を占めるのも事実.

• 「自分達の仕事の方がよい,」「我々の仕事の引用の仕方がなっていない.」(通常の理由)

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 39 / 77

Page 66: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

SML]の基礎理論構築例

自然なデータ表現:我々の戦略の復習• レコード:ビットマップ付きヒープブロック

GC

i

i

j

j

n

0 1 1

GC KIND

Layout Bitmap

non pointer data

non pointer data

SIZE

non pointer data

0 0

Object n

• これらは,あまりに当たり前のデータ表現.• この当たり前のことが実現されていなかったのが,(Stadard

ML of New Jersey,OCaml等を含む)関数型言語.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 40 / 77

Page 67: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

SML]の基礎理論構築例

自然なデータ表現:実現上の問題点以下のような関数をどうコンパイルするか?

let f = λx.(x,1)in(f 1, f (2,3))

end

この関数は,それぞれの呼び出しに応じて

• (1,1) and

• ((2,3),1)なるレコードを生成するが,これらは異なるビットマップを必要とする.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 41 / 77

Page 68: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

SML]の基礎理論構築例

自然なデータ表現:問題の解決はそう難しくない? I多相型レコードのコンパイル(Ohori 1995 TOPLAS)の考え方を用い,コンパイルシステムを構築できる.(Nguen & Ohori)

コンパイル規則Γ, tvar(t), arg(b : 〈t〉) `B e { e′ b are fresh variables

Γ `B Λt.e { λb.e′

Γ `B e { e′ Γ `B τ{ eb

Γ `B (e τ) { (e′ eb)

Γ `B ei { e′iΓ `B e′

i: σi Γ `B σi { eb

i(1 ≤ i ≤ n)

Γ `B (e1, . . . , en) { ([eb1, . . . , eb

n]; e′1, . . . , e′n)

ビットタグ生成規則Γ `B σ{ tagOf(σ) if σ has a proper outermost type constructor

Γ `B t { b if b : 〈t〉 ∈ Γソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 42 / 77

Page 69: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

SML]の基礎理論構築例

自然なデータ表現:問題の解決はそう難しくない? II操作的意味論を定義

E `B e0 ⇓ i where i = [B1 ◦ · · · ◦ Bn]E `B e j ⇓ v j tagOf(v j) = B j for all 1 ≤ j ≤ n

E `B (e0; e1, . . . , en) ⇓ (i; v1, . . . , vn)

E `B 〈B〉 ⇓ B

E `B ei ⇓ Bi (1 ≤ i ≤ n)E `B [e1, . . . , en] ⇓ [B1 ◦ · · · ◦ Bn]

定理Γ `B e : σが導出可能なら,任意の TV(Γ) ⊆ dom(S)なる型変数の代入 Sと |=B E : S(Γ)なる実行時環境 Eに対して,もしE `B e ⇓ vなら |=B v : S(σ)である.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 43 / 77

Page 70: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

SML]の基礎理論構築例

自然なデータ表現:現実の多数の課題と問題点. Iビットマップ変換を越えた課題

1. クロージャ環境のビットマップ生成

2. スタックフレームのビットマップ生成

3. 最適化

問題点• 上記コンパイルはクロージャ変換と循環的に依存.

1. ヒープブロックのビットマップ生成はラムダ抽象を導入する2. ラムダ抽象のクロージャ変換は,ヒープブロックを生成する.

• 上記コンパイルは,A-Normal変換に [循環的に]依存.1. 総てのスタックフレームエントリ(中間式)の型が必用2. 型変数の場合ビットマップ抽象の必用性が判明.

• 型推論との依存関係の発生.• 型宣言 f : τの処理にはビットマップの適用処理が必用.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 44 / 77

Page 71: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

SML]の基礎理論構築例

自然なデータ表現:現実の多数の課題と問題点. II• 抽象型の場合,型システムは実際の型を保存する必用.

• モジュールコンパイラとの依存関係.• モジュールのシグネチャが実際の関数型と合わなくなる• モジュールシグニチャ制約解消時ビットマップアプリケーションの生成が必用

• データ境界の制約SPARC等の機種では,浮動小数点データは倍語境界に配置する必用があり,レコード内の配置問題を解く必用がある.

• 最適化• 相互再帰関数のビットマップ抽象• Uncurry化

型主導のビットマップパッシング変換に加え,以上の課題総てを解決しないと,自然なデータ表現は実現できない.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 45 / 77

Page 72: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

SMLFormat

講演内容

ML系言語の現状と課題

SML]:概要

SML]:実装と理論

SML]:ツール

SML]:FAQ

雑感,檄文,研究ねた

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 46 / 77

Page 73: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

SMLFormat

SML]ツール:SMLFormat以下の機能を持つ高機能 Pretty-Printer Generator:

• datatype文のコメントからプリンターを自動生成• SMLで定義可能な型すべてに対応.

• 型パラメタ• 相互再帰的定義• whithtype等

• 高度で強力なフォーマット言語をサポート• 文脈依存の改行制御(優先度,スコープ,劣後等の指示)• 文脈依存の自動字下げ• これらを制御するスコープ規則(入れ子を許すガード)• 式の結合度に応じた括弧の自動挿入.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 47 / 77

Page 74: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

SMLFormat

SMLFormat簡単な例:

(*% *)datatype ty =(*% @format(id * loc) id *)TYID of string * loc

| (*%* @format(elem elems * loc)* N1{ d elems(elem)( + "*" +d ) }*)TYTUPLE of ty list * loc

| (*%* @format(dom * result * loc)* R1{ {dom} +d "->" 2[ +1 {result} ] }*)TYFUN of ty * ty * loc

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 48 / 77

Page 75: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

SMLFormat

高が清書プログラム....という方には,SML]開発チームからのチャレンジ問題

System Fの型のプリンターの自動生成などにも使用可能な清書プログラム生成システムを設計実装せよ.たとえば,あるプログラマーは ∀t.t → (∀s.s → t)を ∀(0 → ∀(0 → 1))と表現し,[′a.′a− > [′b.′b− >′ a]]と表示する清書プログラムを書きたいかもしれない.

• 感想:Formatter開発は簡単.実用 Formatter生成ツールの別.

• SML]のプリンタはすべて SMLFormatを使用して自動生成.この生産性向上への寄与は大きい.現在 SML]の中間言語は12.これらプリンターの生成や変更を簡単.

• 結論:SMLFormatは実用ツール

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 49 / 77

Page 76: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

SMLFormat

SML]での実例

and ty = ..| (*%* @format(left * right)* R1{ {left()(tenv)} +d

"->" 2[+1 {right()(tenv)} ] }*)FUNty of ty * ty

| (*%* @format({tenv:tvkind imap, body})* !N0{"[" imap(tvkind()(imap:newTenv()(tenv)))("","")* "." 2[1 body()(imap:newTenv()(tenv))]* "]" * }*)POLYty of {tenv~:~btvKind IEnv.map, body~:~ty}

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 50 / 77

Page 77: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

SMLDoc

SMLDoc以下の機能をもつドキュメント生成ツール:

• SMLのソースファイルを解析し,HTML形式のドキュメントを自動生成

• モジュール,型,変数等を自動認識• 以下のドキュメントコメントに対応

• JAVADOCに相当する作者等の,関数の属性等のタグ,• インラインコメント• whithtype等

以下にある SML]ホームページのドキュメントすべて SMLDocで生成したもの.

「SML]プロジェクト」→「リソース」→「SML]の内部表現」

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 51 / 77

Page 78: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

講演内容

ML系言語の現状と課題

SML]:概要

SML]:実装と理論

SML]:ツール

SML]:FAQ

雑感,檄文,研究ねた

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 52 / 77

Page 79: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

SML]の名前の由来は?

SML]の名前の由来は?以下の論文で使用したプログラミング言語の名前.

A polymorphic record calculus and its compilation. ACMTransactions on Programming Languages and Systems,vol 17, no 6, pages 844-895, 1995. 21(1): 30-76 1996.

もともとは,SMLのレコードオペレータ#から.

SML]は,C#や F#よりずっと古いのです.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 53 / 77

Page 80: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

Standard ML ではなく OCAML との互換のほうがよいのでは?

Standard MLではなくOCamlと互換にすべきでは? I回答の前に,まず産業界にも受け入れてもらえるような「言語の定義」や「言語の互換性」とは何かを考えてみましょう.

• 言語にはその定義が必須.「互換」云々の以前の問題.言語の学術的研究や形式的な検証をやっている者にとっては(健全な)常識中の常識,のはずですが,..

• コンパイラは言語の仕様に完全に従う必要がある.ごくごくわずかな構文や意味の違いや「改良」でも,コンパイルできず,使い物にならない.

• 定義は厳密以外に,幅広い共有と安定が必要.「私の決定が定義である」ではなく,だれでも共有できる定義が 10年後も存在する必要.その予想が無ければ新しい言語などに手は出せない.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 54 / 77

Page 81: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

Standard ML ではなく OCAML との互換のほうがよいのでは?

Standard MLではなくOCamlと互換にすべきでは? II回答の前にもう 1点補足;我々は,

「SML]は Standard MLと上位互換性を持つ」

と主張しました.これは,我々の期待ではなく,

1. 構文解析,型チェック等を the Definitionに従い実装

2. コード作成者とは別の者が the Definitionに従い

テスト対象 カウント単位 テスト数SML]核言語 val宣言 1621SML]モジュール言語 valおよび structure宣言 1207サポートライブラリ val宣言 3433バグ修正チェック 対応したバグの数 234合計 6495

に及ぶテストケースの作成とテストの実施

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 55 / 77

Page 82: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

Standard ML ではなく OCAML との互換のほうがよいのでは?

Standard MLではなくOCamlと互換にすべきでは? IIIを経て実現した事実に基づく主張なのです.

The Definition of Standard MLは,極めて堅牢な定義であり,それに準拠する教科書も多数出版されています.

すでにおわかりとおもいますが,以上のようなことはOCamlでは不可能なのです.我々の本 FAQへの回答は,

OCaml互換なる概念は,現在の所,INRIAのOCaml開発チーム以外不可能であり,存在しない.

です.

フランス国内ならいざ知らず,そのような言語を,例えば日本が,大規模基幹システムの開発,ソフトウエア認証,等に安心して使えるでしょうか?

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 56 / 77

Page 83: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

Standard ML ではなく OCAML との互換のほうがよいのでは?

Standard MLではなくOCamlと互換にすべきでは? IVなお,念のための注釈ですが,hacker(*)である私は個人的には,OCamlの

• 堅牢さ,• 先進性,• コンパイラコードの質高さ,• 背後の理論,そして,• それらを開発したアーキテクト

を尊敬しています.

しかし,一方,私は,言語の設計や開発,そして大学におけるdisciplineとしての言語の教育は,それら個人的な尊敬や(趣味,好み)のレベルで行うべききではないと考えます.(*) A person with an enthusiasm for programming or using computers asan end in itself.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 57 / 77

Page 84: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

Polymorphic Variant は?

OCamlで開発されたpolymorphic variantはサポートしないのですか? I

まず誤解を解いておきましょう.多相型バリアントのML系言語での表現とコンパイル・実装技術は,SML]が基礎とするレコード多相性の論文(Ohori, TOPLAS 1995)で提案されたものです.

従って,多相型バリアントの SML]への導入には,技術的に何ら問題はありません.ただ,

• SML]は The Definition of Standard MLと完全な上位互換性を保つために,キーワードの導入は極力さける

• 多くの場合多相型バリアントの機能は多相型レコードで代用できる

の理由から導入していません.(将来は未定)

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 58 / 77

Page 85: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

Polymorphic Variant は?

OCamlで開発されたpolymorphic variantはサポートしないのですか? II

多相型レコードを用いたバリアントの例:

->val P1 = fn M => #CPoint M {x=1.1, y = 1.1};val P1 = fn : [’a#{CPoint:{x:real,y:real} -> ’b},’b.

’a -> ’b]->val P2 = fn M => #PPoint M {r=1.1, t = 0.5};val P2 = fn : [’a# ... ’a -> ’b]->val myPointList = [P1, P2];val myPointList = [fn,fn] : ...

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 59 / 77

Page 86: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

Polymorphic Variant は?

OCamlで開発されたpolymorphic variantはサポートしないのですか? III

->val distance ={CPoint = fn {x,y} => Real.Math.sqrt(x*x + y*y),PPoint = fn {r, theta} => r};

val distance = {CPoint = fn, PPoint = fn}: {CPoint:{x:real,y:real} -> Real.Math.real,PPoint:[’a,’b.{r:’b , t:’a} -> ’b]}

->P1 distance ;val it = 1.55563 : real->fun iterator f L = map (fn x => x f) L;val iterator = fn : [’a ....]->iterator distance myPointList;>val it = [1.55563,1.1] : real List.list

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 60 / 77

Page 87: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

多相型レコードについて

多相レコードとその実装は intensional type analysisやtype class,OCamlのオブジェクトの応用ですか?これらがお互いに良く似ているのは,その通りです.では,SML]のレコード多相がそれらの応用,利用,模倣かという点に関しては,レコード多相の歴史をお調べくだい.

• Wand, 1987 LICS(type system), Colligendum 1988 LICS.

• Ohori Buneman, 1988, LFP(type system)

• Jategaonkar, Mitchell 1988, LFP(type system)

• Remy 1989 POPL(type system)

• Ohori 1992 POPL(compilation)

• Jones 1993 ESOP (compilation)

• Ohori 1995 TOPLAS(type system and compilation)

より詳しくお知りになりたい方は,ご説明します.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 61 / 77

Page 88: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

雑感

講演内容

ML系言語の現状と課題

SML]:概要

SML]:実装と理論

SML]:ツール

SML]:FAQ

雑感,檄文,研究ねた

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 62 / 77

Page 89: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

雑感

最初に戻って,まず,1992年の問とその答えをふりかえってみたい.

本物のプログラマはMLを使うようになる - か?

• 1992年:公式の答え もちろん!答えが yesでなくて,この問を発す

るはずがない.

一般の反応 MLなど知らないが,おもしろそう.

• 2006年公式の答え 未だし.

一般の反応 MLなど役に立たないし.必要ない.

本当の答え? 本当のプログラマはいなくなりつつある?

プログラムよりコンテンツ生産が重要?プログラミングはWebページをかくこと?

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 63 / 77

Page 90: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

雑感

本当のプログラマはいなくなりつつある?産業界:高度な高機能ソフトの独自生産は必要ない?

• カスタマイズ,コンテンツ生産で十分?• OS,データベース,トランザクション処理,言語等々の基幹ソフトはアメリカ製で十分?

学会・大学:プログラミングはもはや魅力あるテーマではない?

• Web技術,大量データの処理等々が社会の要請?

• そうでないと予算が通らない?• 学生も興味を示さない?

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 64 / 77

Page 91: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

雑感

この状況を示唆するFAQ I• Q. SMLなど obsoleteじゃないの?まともに完成していないのに,obsoleteになるわけがない!

• Q. MLの研究などまだやってるの?これに対しては,逆に質問をしてみたい.• あなたの 10年前の主張はどうされたのか?• あなの 5年前の理論は実現されたのか?• どうしてやめたのか?

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 65 / 77

Page 92: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

雑感

この状況を示唆するFAQ II• Q.流行らない.そんなので予算書が通るの?申請書に踊るファッショナブルなキーワードを探し続けるのもよいが,私は,それと引き替えに,基礎理論の研究とハッキングの楽しみをあきらめる気はない

今日のファッショナブルなキーワードは,流行歌のように,明日の廃りものでは...

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 66 / 77

Page 93: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

雑感

では,廃りものではない,「万世不易」のものは何か?

情報科学が見つけ出した数少ない根本原理:

It is possible to invent a single machine which can beused to compute any computable sequence.(A. Turing, On computable numbers, with an applicationto the entscheidungsproblem.)

「万世不易」のなものは,これを置いてない,と思う.

いうまでもなく,この探求の対象は

• プログラミングと,• その形式系であるプログラミング言語であり,• その実践としてのハッキングである.

これらは,最も魅力あるものである.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 67 / 77

Page 94: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

雑感

では,廃りものではない,「万世不易」のものは何か?情報科学が見つけ出した数少ない根本原理:

It is possible to invent a single machine which can beused to compute any computable sequence.(A. Turing, On computable numbers, with an applicationto the entscheidungsproblem.)

「万世不易」のなものは,これを置いてない,と思う.

いうまでもなく,この探求の対象は

• プログラミングと,• その形式系であるプログラミング言語であり,• その実践としてのハッキングである.

これらは,最も魅力あるものである.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 67 / 77

Page 95: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

雑感

では,廃りものではない,「万世不易」のものは何か?情報科学が見つけ出した数少ない根本原理:

It is possible to invent a single machine which can beused to compute any computable sequence.(A. Turing, On computable numbers, with an applicationto the entscheidungsproblem.)

「万世不易」のなものは,これを置いてない,と思う.

いうまでもなく,この探求の対象は

• プログラミングと,• その形式系であるプログラミング言語であり,• その実践としてのハッキングである.

これらは,最も魅力あるものである.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 67 / 77

Page 96: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

雑感

そこで,まず.産業界の方々へのおねがい是非,基幹ソフトウエアの開発の再開を!

儲からなくても,

• OS,

• 言語,• データベース,• 通信管理システム,...

それらをすべて作っていた時代があった.

これなくして,日 x政府/総 xxxxx会議/経 x連などが声高に叫ぶ「世界最先端の日本の IT産業」の未来なんてあるのか?

まあ,ここにはおそらくいないであろう方々はさておき,

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 68 / 77

Page 97: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

雑感

学生,若手研究者への檄文:ぜひ,

• プログラミングの基礎研究,• プログラミング言語開発,• 新たな理論や方式を創造するハッキング

への取組みを(再開を)!

これが計算機科学の核である,とまだまだ若手の私は信ずる.

(注):

若手 体系を構築し,アルゴリズムを考え,コードを書くのが好きである

“重鎮” 委員会を開き,「情報学の方向性」を提言するのが私の重要な仕事だ

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 69 / 77

Page 98: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

雑感

共感される方へ是非,

• 言語,ライブラリ,ツール,プログラミング環境の共同開発,• 理論や新しい方式の共同研究

をお願いしたい.

例えば,私の研究室では,

• informalな discussionや共同開発

• 修士,博士の学生• ポストドクタ(予算の制限が許せば)• 研究スタッフ・教員(ポストがある限り)

等々すべて歓迎する.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 70 / 77

Page 99: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

研究ねた,結論に代えて

そこで,以下に,今考え付く研究ねたの幾つかを示して,結論に代えたい

研究ねた 「たね」を逆にした韻語.(通常秘密の)研究課題.ResearchIssue.

xネタ つくりばなし.「それは—だろう.」.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 71 / 77

Page 100: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

研究ねた,結論に代えて

データベースとMLの融合これは,1989年以来の未完成の課題.しかし,今なら,SML]のインフラを使い,大きく進展させることが可能(なはず.)

Ohori, Bumenan, Breazu-Tannen, Database Programming inMachiavelli – a polymorphic language with type infernece,ACM SIGMOD, 1989.Buneman, Ohori, Polymorphism and Type Inference inDatabase Programming, ACM TODS, 1996.

しかし,現実は,型理論だけでは話はすまない.• 動的に(多相)型表現を調整(mediate)し,必用なら媒介コードを生成するミドルウエア

• シーケンシャルなレコードアクセスモデル等が必用とおもわれる.

データベースを使用しない本格的アプリケーションは無く,このトピックは,大きな研究課題(ねた).

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 72 / 77

Page 101: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

研究ねた,結論に代えて

証明論に基づく系統的なコード生成,検証,最適化機械語コードの論理学的解釈:

A. Ohori, A Proof Theory for Machine Code,Submitted for publication. (Preliminary summary waspresented as an invited paper at FLOPS, 1999.)

の考え方を基に,コード生成,コード検証,そしてコード最適化の系統的な枠組みを構築し,実装する.幾つかの結果:• Higuchi, Ohori, ACM TOPLAS, 2007. (JVM Access Control)• Ohori,J. Sci. Comp. Prog, 2004. (Register Allocation)• Matsuno, Ohori, ACM PPDP, 2006. (Type system for SSA)

洞察• 私見では,Morrisett等の Typed Assembly Languageなどより有望...と期待.

• (研究ねた)「危険な際どいコード」と「最適化された巧みなコード」の関係などの展望を与えうる.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 73 / 77

Page 102: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

研究ねた,結論に代えて

関数からレジスタ+ループ+ジャンプコードへ関数型言語のさらなる「常識」:関数はすべてクロージャで表現する.

したがって,• コンビネータ:(code pointer, the empty record)• プリミティブ関数:(eta-expanded code, the empty record)• ループ:まず末尾再帰関数をつくり,それをループ最適化する.

• ダブルループ:これは相互再帰関数,ループへの最適化はあきらめる.

そんな,バカな.

これに関しては,若干の技術的検討結果がある.興味ある方はぜひ,討論をお願いしたい.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 74 / 77

Page 103: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

研究ねた,結論に代えて

部分評価再考基本的問;

部分評価,インライン,関数融合,これらの違いはなにか,或は,これらを統一して扱う枠組みはあるか?

関数融合の素人の我々が,最近作成した新しい融合変換(Ohori,Sasano, POPL 2007)の中で,これらに関連する興味深い洞察を得た.(具体的ねた)

これらの関連に興味のある専門家/素人の方,ぜひ,討論をお願いしたい.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 75 / 77

Page 104: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

研究ねた,結論に代えて

その他,ランダムなリスト• JAVAとMLの統合.

MLのものはMLで,Javaのものは Javaへ.型の対応はほぼ見通しがある(Ohori, Yamatodani, ACMICFP 2003)しかし,スレッド,例外などをどうするか.等の現実問題の解決,実装には数多くの問題がある.

• 複数言語間でのヒープの共用JAVAとMLの真の相互運用機構の実現の基礎.

• SML]スクリプトライブラリを拡張した SML]シェル• サーチと自動合成機能を持ったプログラム開発環境

これらは,いずれも冗談ではなく,本当の研究課題.興味があれば,共同研究・共同開発などをぜひお願いしたい.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 76 / 77

Page 105: プログラミング言語 SML の開発とその基礎理論 多 …序. . . . . . . . . ML 系言語の現状と課題. . . . . . . . . . . . . . . . SML]:概要. . . . . . .

. . . .

. . . . . . . . .

ML 系言語の現状と課題

. . . . . . . . . . . . . . . .

SML]:概要

. . . . . . . . . . . .

SML]:実装と理論

. . . . . .

SML]:ツール

. . . . . . . . .

SML]:FAQ

. . . . . . . . . . . . . . . .

雑感,檄文,研究ねた

研究ねた,結論に代えて

お招き頂きありがとうございました.

ソフトウエア科学会大会招待講演 2006 年 9 月 14 日 プログラミング言語 SML]の開発とその基礎理論 77 / 77