Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Self-modifying Common Lisp

Self-modifying Common Lisp

Author: Shih-Chia Chen (Shaka)
Email: [email protected]

Other Decks in Programming

Transcript

  1. PURPOSE IS AI Real Artificial Intelligence(AI) requires critical thinking ability.

    step-by-step follower is not pre-programmed program = step-by-step follower.
  2. PURPOSE IS AI We need a program that “criticize” itself.

    So we built self-modifying lisp program.
  3. 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.)
  4. 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)))
  5. EVAL = APPLY To eval a symbol x = (x)

    = (x default-arg-0 default-arg1 …) default value of a symbol is itself
  6. 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)))
  7. 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)))
  8. 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)))
  9. 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)))
  10. 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)))
  11. 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)))
  12. 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)))
  13. 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)))
  14. 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)))
  15. 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)))
  16. 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)))
  17. 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)))
  18. 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)))
  19. 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)))
  20. 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)))
  21. 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)))
  22. 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)))
  23. 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)))
  24. 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)))
  25. 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)))
  26. 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)))
  27. 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)))
  28. WHEN THE CODE CHANGES ITSELF Function Name Parameters Function Body

    f2 (defun (f3 2) 
 (quote cons 
 (quote pf0 pf1)))
  29. WHEN THE CODE CHANGES ITSELF Function Name Parameters Function Body

    f2 (defun f2 
 (quote cons 
 (quote pf0 pf1)))
  30. 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)))
  31. FUTURE WORKS Building a pool of self modifying programs with

    management tools. Make the dialect more like Common Lisp