Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Purely Functional Smalltalk-72
Search
Minori Yamashita
December 27, 2012
Programming
11k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Purely Functional Smalltalk-72
SchemeのマクロでSmalltalk-72をシミュレートします。それを踏まえて言語デザインについて考えます。
Minori Yamashita
December 27, 2012
More Decks by Minori Yamashita
See All by Minori Yamashita
Cloxp @ Smalltalk Meetup
ympbyc
0
310
Real World Objects
ympbyc
2
3.4k
ClojureScriptで変わるクライアントサイドWeb
ympbyc
0
980
LittleSmallscript
ympbyc
2
1.5k
Other Decks in Programming
See All in Programming
信頼性の目標を誰も求めてない
shubox
0
500
[GoCon2026] When Goroutines Are Not Enough: Runtime Locality in High-Throughput Go
takehaya
5
1.3k
WebMCP Challenge に星空観察アプリで参加した話
okajun35
0
120
PyO3 で既存 Python 評価器を Rust core 化する ー wasm-bindgen でブラウザにも配るための設計
kdash
1
560
[DroidKaigi 2026] Bring your own phones to Gradle Managed Devices
f2lk
0
110
「AI時代、配布するPythonコードをどう守るか: 難読化の実験と判断軸」 #PyconJP2026
pkshadeck
PRO
2
180
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
130
Claude Codeを組織的に動かして月400PRを実現した話
happy_ryo
0
260
Building an Out-of-Order CPU
latte72
1
740
型解析で実現する Go の言語内 DSL / Conference に Go! タイムテーブルの歩き方 for Gophers
mazrean
0
140
MIZARU@SPAJAM2026 第二回予選
1901drama
0
110
『寄り添うラジオ』をAIで作る 体験価値から逆算した、会話しないUXと品質設計
theoriatec2024
3
140
Featured
See All Featured
KATA
mclloyd
PRO
35
15k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
470
Into the Great Unknown - MozCon
thekraken
41
2.7k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
230
A better future with KSS
kneath
240
18k
The Language of Interfaces
destraynor
162
27k
How to train your dragon (web standard)
notwaldorf
97
6.8k
How STYLIGHT went responsive
nonsquared
100
6.3k
Designing for Timeless Needs
cassininazir
1
470
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
The SEO identity crisis: Don't let AI make you average
varn
0
550
How to build a perfect <img>
jonoalderson
1
6k
Transcript
Purely Functional Smalltalk-72 Dec 2012 Minori Yamashita
自己紹介 山下実則(19) • ハンドル: ympbyc ◦ twitter, github …etc •
代々木の12階でWebとスマホやってます。 • Available for hire 9月の合同勉強会でLittleSmallscriptの発表をさせ て頂きました。今回もよろしくです。
Smalltalk-72
コード例 Smalltalk-72 Manualより
コード例 Smalltalk-72 Manualより
goto ☞ox←mx ☞oy←my
• The first real Smalltalk ◦ -71は仲間内だけ? • 記号がいっぱい •
名前呼び出し。レシーバがトークンを食いながら 実行されて行く • クラスベースオブジェクト指向 ◦ クラスを関数としても呼び出せる ◦ 継承はない (-76から) • 本来は関数型的な思想 ◦ 代入dis • Lispの特殊形式をdisりながら作られた ◦ 全てメッセージングなのが理想 概要だけ…
LispのマクロでSmalltalk-72
コード例
コード例 Smalltalk-72 Manualより
(☝ _ )☝ SO
(☞ _ )☞ COOL (☝ _ )☝ SO
⇑
☞x←y ☞x←:.
(☞ x ← : . (+ x 2)) ☟ (lambda
(x) (+ x 2)) 定義側 ((foo 'bar) 5) ;=> 7 呼び出し側 これは、 (foo 'bar 5) と書きたい。後で出てきます。
None
to
to WAT DA FSCK IS Z
Z Combinator
None
to ⇒!?!?←#☞⇑!???!
(to animal (name) ( 'name ⇒ name '())) (define (animal
name) (Z (lambda (SELF) (lambda (⇒) (if (equal? 'name ⇒) name '()))))) ☟ メソッド名が束 縛される
コード例2
デモ
ここからが本題
アラン ケイは言いました
"take the hardest and most profound thing you need to
do, make it great, and then build every easier thing out of it" Alan Kay 1993
1970年、関数は弱かった。 • LISPしかない • ダイナミックスコープ • 先行評価 • 特殊形式に依存していた
そこでケイは 関数を"Make it great"するのではなく、 "The hardest and most profound thing"
として、オブジェクトとメッセージングを選ん だ。 Smalltalkでこれは成功した。
時は流れ
オブジェクト指向言語は肥大化した。 • C++, Java, Ruby ... • 無節操なAlgol風構文追加 • 副作用ベース
• オブジェクト指向誕生の動機が全く尊 重されていない
It is unfortunate that much of what is called "object-oriented
programming" today is simply old style programming with fancier constructs. Many programs are loaded with "assignment-style" operations now done by more expensive attached procedures. Alan Kay 1993
いっぽうそのころ
関数が強くなっていった! • クロージャ(レキシカルスコープ) • メッセージパッシング(Scheme) • 遅延評価 • カリー化 •
参照透明(副作用は最小) • The most profound thingとして十分 な機能を獲得した
今、Take the most profound thing and make it greatしたらどうなるの か。
一例
Nadeko
遅延評価とカリー化とシンプルなオブジェクトシス テムを積んだ純粋関数型言語. S式を使うけどマク ロはなし。 構文はラムダ抽象と関数定義と関数呼び出しの3 つだけ!
遅延評価とカリー化とオブジェクト指向風メッセー ジングを積んだ純粋関数型言語. S式を使うけどマ クロはなし。 構文はラムダ抽象と関数定義と関数呼び出しの2 つだけ! Haskell, Io Smalltalk Lisp
Smalltalk-72風 使っているのは関 数だけ!
Actor
後置風関数 - リストが高階関数 語順がSmalltalkと同じになる 無限リスト 部分適用
コミット歓迎
おしまい!
The Early History of Smalltalk http://www.esug. org/data/HistoricalDocuments/Smalltalk80/Smalltalk History.pdf Smalltalk-72 Instruction
Manual http://www.textfiles. com/bitsavers/pdf/xerox/alto/Smalltalk72_Manual. pdf Nadeko https://github.com/ympbyc/Nadeko 参考