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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
AtCoder Conference 2025
shindannin
0
1.1k
Patterns of Patterns
denyspoltorak
0
1.4k
Lambda のコードストレージ容量に気をつけましょう
tattwan718
0
130
AgentCoreとHuman in the Loop
har1101
5
240
組織で育むオブザーバビリティ
ryota_hnk
0
180
例外処理とどう使い分ける?Result型を使ったエラー設計 #burikaigi
kajitack
16
6.1k
Vibe Coding - AI 驅動的軟體開發
mickyp100
0
180
高速開発のためのコード整理術
sutetotanuki
1
400
AIによる高速開発をどう制御するか? ガードレール設置で開発速度と品質を両立させたチームの事例
tonkotsuboy_com
7
2.3k
AIフル活用時代だからこそ学んでおきたい働き方の心得
shinoyu
0
130
20260127_試行錯誤の結晶を1冊に。著者が解説 先輩データサイエンティストからの指南書 / author's_commentary_ds_instructions_guide
nash_efp
1
970
それ、本当に安全? ファイルアップロードで見落としがちなセキュリティリスクと対策
penpeen
7
3.9k
Featured
See All Featured
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
240
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.2k
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
170
Designing Powerful Visuals for Engaging Learning
tmiket
0
230
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.1k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
196
71k
Statistics for Hackers
jakevdp
799
230k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.1k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
340
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Into the Great Unknown - MozCon
thekraken
40
2.3k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
0
140
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