Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Self-modifying Common Lisp
Search
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
20251212 AI 時代的 Legacy Code 營救術 2025 WebConf
mouson
0
180
LLM Çağında Backend Olmak: 10 Milyon Prompt'u Milisaniyede Sorgulamak
selcukusta
0
120
ゲームの物理 剛体編
fadis
0
350
Cell-Based Architecture
larchanjo
0
130
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
130
Go コードベースの構成と AI コンテキスト定義
andpad
0
130
ELYZA_Findy AI Engineering Summit登壇資料_AIコーディング時代に「ちゃんと」やること_toB LLMプロダクト開発舞台裏_20251216
elyza
1
240
Rediscover the Console - SymfonyCon Amsterdam 2025
chalasr
2
170
GISエンジニアから見たLINKSデータ
nokonoko1203
0
140
開発に寄りそう自動テストの実現
goyoki
2
1.1k
AIコーディングエージェント(Manus)
kondai24
0
190
俺流レスポンシブコーディング 2025
tak_dcxi
14
8.9k
Featured
See All Featured
RailsConf 2023
tenderlove
30
1.3k
GraphQLとの向き合い方2022年版
quramy
50
14k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
286
14k
Six Lessons from altMBA
skipperchong
29
4.1k
Building an army of robots
kneath
306
46k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
1k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
132
19k
Statistics for Hackers
jakevdp
799
230k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Facilitating Awesome Meetings
lara
57
6.7k
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