core.logic (clojure)
TRANSCRIPT
![Page 1: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/1.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
김선호
Clojure,��
웹개발이�다가�아니에요
![Page 2: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/2.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
Clojure�가�잘할�수�있는�영역?
![Page 3: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/3.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
Clojure�가�잘할�수�있는�영역?
Java에�비해�편리한
![Page 4: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/4.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
chap16.�
생각하는�프로그램
![Page 5: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/5.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
core.logic
![Page 6: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/6.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
![Page 7: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/7.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
![Page 8: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/8.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
1. 첫번째�빈�칸에�숫자�배치�
2. 조건�부합�여부�확인�
3. 다음�칸으로�이동하고�배치�
4. 반복
행,�열,�서브그리드에서�유일한�숫자인가
![Page 9: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/9.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
이렇게?
![Page 10: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/10.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
이렇게!
![Page 11: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/11.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
원리는�별�것�아닙니다
https://www.jug.ch/events/slides/140225_Clojure_gix.pdf�
![Page 12: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/12.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
Data�is�Code�is�Data
![Page 13: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/13.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
명령형��
vs.�
선언형,�제약조건형
![Page 14: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/14.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
명령형
Imperative Programming
The three keys needed...
logic key functional key imperative key
![Page 15: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/15.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
명령형
![Page 16: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/16.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
선언형(논리�프로그래밍)Logic Programming
Just one key is needed...
Magic
logic key
![Page 17: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/17.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
선언형(논리�프로그래밍)Logic Programming
Just one key is needed...
Magic
logic key
miniKanren
![Page 18: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/18.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
![Page 19: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/19.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
What is logic programming?
semantic elements
logic programming
querylogicvariable
free
grounded
knowledgebase
proposition
predicate
term
finitedomains
constraints
deduction
depth-firstsearch
backtracking
unificationinduction
satisfyingassignment
![Page 20: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/20.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
What is logic programming?
abstract ... concrete
logic programming
query knowledgebase
deductionsatisfyingassignment
In which year was julia twice as oldclodette?
julia was born 2 years before clodette
julia was born in 1978
age 2 N, 0 age 120year 2 N, 1978 age 2098
![Page 21: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/21.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
어떻게�생겨먹었나..�joy.logic.planets
http://bit.ly/2g4cfvV
![Page 22: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/22.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
![Page 23: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/23.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
http://lanyrd.com/2012/euroclojure/stfyd/�
![Page 24: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/24.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
Logic�Variable
?q
![Page 25: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/25.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
Fact
(relation�source�target)
개념상�그냥�제가�사용한�표현일�뿐,�
공식�표현이�아닙니다..
![Page 26: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/26.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
간단한�예
(run*�[q]�(conso�q�[]�[:a]))
![Page 27: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/27.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
(run*�[q]�(conso�q�[]�[:a]))
=>�(:a)
간단한�예
![Page 28: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/28.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
(run*�[q]�� (membero�q�[:a�:b�:c]))
정답이�여러개?
![Page 29: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/29.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
(run*�[q]�� (membero�q�[:a�:b�:c]))
=>�(:a�:b�:c)
정답이�여러개?
![Page 30: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/30.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
(run�1�[q]�� (membero�q�[:a�:b�:c]))
=>�(:a)
정답이�여러개?
![Page 31: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/31.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
(run*�[q]�(membero�:b�[:a�:b�:c]))
이건�뭐지?
![Page 32: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/32.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
(run*�[q]�(membero�:b�[:a�:b�:c]))
=>�(_0)
이건�뭐지?
![Page 33: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/33.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
(run*�[q]�(membero�:b�[:a�:b�:c])�(==�q�true))
=>�(true)
단일화(unification)
![Page 34: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/34.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
(run*�[q]�(membero�q�[:a�:b�:c])�(membero�q�[:b�:c�:d]))
조건이�여러개라면?
![Page 35: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/35.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
(run*�[q]�(membero�q�[:a�:b�:c])�(membero�q�[:b�:c�:d]))
=>�(:b�:c)
조건이�여러개라면?
![Page 36: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/36.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
(run*�[q]�(membero�q�[:a�:b�:c])�(membero�:a�[:b�:c�q]))
이런�것도�됩니다
![Page 37: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/37.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
(run*�[q]�(membero�q�[:a�:b�:c])�(membero�:a�[:b�:c�q]))
=>�(:a)
이런�것도�됩니다
![Page 38: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/38.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
스도쿠로�돌아와서
조건
단일화
논리변수�초기화
답은�한�개만!
![Page 39: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/39.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
실행해볼까요?�joy.logic.sdokufd
http://bit.ly/2eLT44W
![Page 40: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/40.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
그래서..�어디에�써먹나?�
(논리적?)�데이터베이스
![Page 41: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/41.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
SELECT * FROM GEEKS WHERE GEEK_ID=0;
geed_id geek_name
0 Archimedes
Tuesday, 22 May 2012
![Page 42: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/42.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
![Page 43: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/43.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
Datomic
![Page 44: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/44.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
Datomic�질의언어:�Datalog
https://en.wikipedia.org/wiki/Datalog�
![Page 45: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/45.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
Datalog
하둡기반�데이터�처리/질의
RDF�데이터�질의�프레임워크
![Page 46: core.logic (Clojure)](https://reader033.vdocuments.net/reader033/viewer/2022042600/586f79a71a28ab10258b7031/html5/thumbnails/46.jpg)
제�5회�Lisp�seminar�@D2�STARTUP�FACTORY,�2016.11.12
감사합니다!
Facebook:�@ksseono�
Twitter:�@SeonhoKim