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
Self-modifying Common Lisp
Search
Austin Ting @ Libgirl Co.,Ltd.
July 09, 2017
Programming
250
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Self-modifying Common Lisp
Author: Shih-Chia Chen (Shaka)
Email:
[email protected]
Austin Ting @ Libgirl Co.,Ltd.
July 09, 2017
Other Decks in Programming
See All in Programming
カツオ、ご期待ください
suneo3476
0
190
The Rails Doctrine Decade
koic
2
590
Unity6 URPによる海底をテーマにしたVJシステムの解説 | Unity Shader 完全に理解した 勉強会
gam0022
0
370
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
790
外から家のPCの電源入れたい!をPHPで解決する
kawashimo0
1
130
パスワード再設定メールのURLについて知っておこう
uyuki234
0
160
ChromeでローカルLLM
ryu1013
0
140
AIに “答え“を書かせるのを やめてみた
___akari11
0
120
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
150
残高管理から台帳サービスへの進化
artoy
1
200
設計次第でAIコードの読む量は減らせる / designing-for-code-reading
minodriven
35
17k
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
1.2k
Featured
See All Featured
Crafting Experiences
bethany
1
380
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
480
GitHub's CSS Performance
jonrohan
1033
470k
Making the Leap to Tech Lead
cromwellryan
135
10k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
74
43k
Chasing Engaging Ingredients in Design
codingconduct
0
360
Art, The Web, and Tiny UX
lynnandtonic
304
22k
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
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