Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Self-modifying Common Lisp
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Austin Ting @ Libgirl Co.,Ltd.
July 09, 2017
Programming
0
230
Self-modifying Common Lisp
Author: Shih-Chia Chen (Shaka)
Email:
[email protected]
Austin Ting @ Libgirl Co.,Ltd.
July 09, 2017
Tweet
Share
Other Decks in Programming
See All in Programming
Rust 製のコードエディタ “Zed” を使ってみた
nearme_tech
PRO
0
180
ぼくの開発環境2026
yuzneri
0
220
Basic Architectures
denyspoltorak
0
670
AWS re:Invent 2025参加 直前 Seattle-Tacoma Airport(SEA)におけるハードウェア紛失インシデントLT
tetutetu214
2
110
izumin5210のプロポーザルのネタ探し #tskaigi_msup
izumin5210
1
120
16年目のピクシブ百科事典を支える最新の技術基盤 / The Modern Tech Stack Powering Pixiv Encyclopedia in its 16th Year
ahuglajbclajep
5
1k
開発者から情シスまで - 多様なユーザー層に届けるAPI提供戦略 / Postman API Night Okinawa 2026 Winter
tasshi
0
200
Best-Practices-for-Cortex-Analyst-and-AI-Agent
ryotaroikeda
1
110
Vibe Coding - AI 驅動的軟體開發
mickyp100
0
180
AIによるイベントストーミング図からのコード生成 / AI-powered code generation from Event Storming diagrams
nrslib
2
1.9k
Package Management Learnings from Homebrew
mikemcquaid
0
220
IFSによる形状設計/デモシーンの魅力 @ 慶應大学SFC
gam0022
1
300
Featured
See All Featured
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
0
110
The SEO identity crisis: Don't let AI make you average
varn
0
240
WCS-LA-2024
lcolladotor
0
450
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
The Curious Case for Waylosing
cassininazir
0
240
Rails Girls Zürich Keynote
gr2m
96
14k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
110
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
140
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
66
37k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
50
HDC tutorial
michielstock
1
380
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Transcript
SELF-MODIFYING LISP Dialect Design & Implementation Shih-Chia Chen (Shaka) @danielviolin
Libgirl Co., Ltd. 2017/July/8th
PURPOSE IS AI Real Artificial Intelligence(AI) requires critical thinking ability.
step-by-step follower is not pre-programmed program = step-by-step follower.
PURPOSE IS AI Static programs not intelligent mainstream machine learning
programs learn by static algorithm.
PURPOSE IS AI We need a program that “criticize” itself.
So we built self-modifying lisp program.
DIALECT FEATURES FOR SELF MODIFICATION Closure Property Every Symbol is
a Function Code = Data sharing process segment (modern OS process management. Code segment and data segment is separate.)
PROGRAM STRUCTURE Function Name Parameters Function Body x y f
(p0) (x p0 1) 1 (p2) (quote p2 0) f2 (defun (f3 f f2) (quote cons (quote pf0 pf1)))
EVAL = APPLY To eval a symbol x = (x)
= (x default-arg-0 default-arg1 …) default value of a symbol is itself
EVAL A FORM (1 (f (cons 1 x) 3)) Function
Name Parameters Function Body x y f (p0) (x p0 1) 1 (p2) (quote p2 0) f2 (defun (f3 f f2) (quote cons (quote pf0 pf1)))
EVAL A FORM (1 (f (cons 1 x) 3)) Function
Name Parameters Function Body x y f (p0) (x p0 1) 1 (p2) (quote p2 0) f2 (defun (f3 f f2) (quote cons (quote pf0 pf1)))
EVAL A FORM (1 (f (cons (1 0) x) 3))
Function Name Parameters Function Body x y f (p0) (x p0 1) 1 (p2) (quote p2 0) f2 (defun (f3 f f2) (quote cons (quote pf0 pf1)))
EVAL A FORM (1 (f (cons (quote 0 0) x)
3)) Function Name Parameters Function Body x y f (p0) (x p0 1) 1 (p2) (quote p2 0) f2 (defun (f3 f f2) (quote cons (quote pf0 pf1)))
EVAL A FORM (1 (f (cons (quote 0 0) x)
3)) Function Name Parameters Function Body x y f (p0) (x p0 1) 1 (p2) (quote p2 0) f2 (defun (f3 f f2) (quote cons (quote pf0 pf1)))
EVAL A FORM (1 (f (cons (quote 0 0) (x))
3)) Function Name Parameters Function Body x y f (p0) (x p0 1) 1 (p2) (quote p2 0) f2 (defun (f3 f f2) (quote cons (quote pf0 pf1)))
EVAL A FORM (1 (f (cons (quote 0 0) y)
3)) Function Name Parameters Function Body x y f (p0) (x p0 1) 1 (p2) (quote p2 0) f2 (defun (f3 f f2) (quote cons (quote pf0 pf1)))
EVAL A FORM (1 (f (cons (quote 0 0) y)
3)) Function Name Parameters Function Body x y f (p0) (x p0 1) 1 (p2) (quote p2 0) f2 (defun (f3 f f2) (quote cons (quote pf0 pf1)))
EVAL A FORM (1 (f (quote (quote 0 0) y)
3)) Function Name Parameters Function Body x y f (p0) (x p0 1) 1 (p2) (quote p2 0) f2 (defun (f3 f f2) (quote cons (quote pf0 pf1)))
EVAL A FORM (1 (f (quote (quote 0 0) y)
3)) Function Name Parameters Function Body x y f (p0) (x p0 1) 1 (p2) (quote p2 0) f2 (defun (f3 f f2) (quote cons (quote pf0 pf1)))
EVAL A FORM (1 (f (quote (quote 0 0) y)
(3))) Function Name Parameters Function Body x y f (p0) (x p0 1) 1 (p2) (quote p2 0) f2 (defun (f3 f f2) (quote cons (quote pf0 pf1)))
EVAL A FORM (1 (f (quote (quote 0 0) y)
3)) Function Name Parameters Function Body x y f (p0) (x p0 1) 1 (p2) (quote p2 0) f2 (defun (f3 f f2) (quote cons (quote pf0 pf1)))
EVAL A FORM (1 (f (quote (quote 0 0) y)
3)) Function Name Parameters Function Body x y f (p0) (x p0 1) 1 (p2) (quote p2 0) f2 (defun (f3 f f2) (quote cons (quote pf0 pf1)))
EVAL A FORM (1 (x (quote (quote 0 0) y)
1)) Function Name Parameters Function Body x y f (p0) (x p0 1) 1 (p2) (quote p2 0) f2 (defun (f3 f f2) (quote cons (quote pf0 pf1)))
EVAL A FORM (1 (x (quote (quote 0 0) y)
1)) Function Name Parameters Function Body x y f (p0) (x p0 1) 1 (p2) (quote p2 0) f2 (defun (f3 f f2) (quote cons (quote pf0 pf1)))
EVAL A FORM (1 (x (quote (quote 0 0) y)
(1 0))) Function Name Parameters Function Body x y f (p0) (x p0 1) 1 (p2) (quote p2 0) f2 (defun (f3 f f2) (quote cons (quote pf0 pf1)))
EVAL A FORM (1 (x (quote (quote 0 0) y)
(quote 0 0))) Function Name Parameters Function Body x y f (p0) (x p0 1) 1 (p2) (quote p2 0) f2 (defun (f3 f f2) (quote cons (quote pf0 pf1)))
EVAL A FORM (1 (x (quote (quote 0 0) y)
(quote 0 0))) Function Name Parameters Function Body x y f (p0) (x p0 1) 1 (p2) (quote p2 0) f2 (defun (f3 f f2) (quote cons (quote pf0 pf1)))
EVAL A FORM (1 y) Function Name Parameters Function Body
x y f (p0) (x p0 1) 1 (p2) (quote p2 0) f2 (defun (f3 f f2) (quote cons (quote pf0 pf1)))
EVAL A FORM (1 y) Function Name Parameters Function Body
x y f (p0) (x p0 1) 1 (p2) (quote p2 0) f2 (defun (f3 f f2) (quote cons (quote pf0 pf1)))
EVAL A FORM (quote y 0) Function Name Parameters Function
Body x y f (p0) (x p0 1) 1 (p2) (quote p2 0) f2 (defun (f3 f f2) (quote cons (quote pf0 pf1)))
ALL THE CODE IS ON THE TABLE Function Name
Parameters Function Body a (1 (f (cons 1 x) 3)) x y f (p0) (x p0 1) 1 (p2) (quote p2 0) f2 (defun (f3 f f2) (quote cons (quote pf0 pf1)))
WHEN THE CODE CHANGES ITSELF Function Name Parameters Function Body
f2 (defun (f3 2) (quote cons (quote pf0 pf1)))
WHEN THE CODE CHANGES ITSELF Function Name Parameters Function Body
f2 (defun f2 (quote cons (quote pf0 pf1)))
OR MORE COMPLICATED Function Name Parameters Function Body x y
f (p0) (p0 x (defun x 1)) 1 (p2) (f2 (defun f (quote p2 0)) f2 (defun (f3 2) (quote cons (quote pf0 pf1)))
BEING A LISP ENSURES TURING-COMPLETE Primitives cons car cdr eq
when atom quote t nil defun
LITTLE DEMO
FUTURE WORKS Building a pool of self modifying programs with
management tools. Make the dialect more like Common Lisp
THANK YOU