Lisp �̒��� Android �̒��� �����̒��� �S���̒��� �r�[���R���N�V����
Software Design 2015�N8����
�Ɏ��M�����u�C�y�Ɏ����Ă݂悤�I������ Lisp ����v��
���S�Ҍ����̋L���ł��������Ƃ�y�[�W���̊W�ŁA������Ȃ��������Ƃ������Ɂi�ڂ��ڂ��j�����Ă݂܂��B
�u�\�t�g�E�F�A�f�U�C�� 2015�N8����
��1���W �Ȃ����^�v���O���~���O�͓���̂��H
Lisp�CScala�CHaskell�CElixir�CPython�CClojure�C���^�̃G�b�Z���X���w�K����v���
�i�Q�l�jWeb����� �͂��߂Ă�Lisp���^�v���O���~���O �\�����_�v�Z���烊�t�@�N�^�����O�܂ň�C�ɂ킩��
Tweet |
�Ɍv�Z�͊��^�v���O���~���O�ł͊�{���́u�L�v�ł����A�{���͏��S�Ҍ����Ƃ������ƂŃJ�b�g���Ă��܂����A�����ł͏����������܂��B
�Ɍv�Z�i��-calculus�j�̓��ϊ��ƃ�-�Ȗ�A��-�ϊ��̋K��������܂��B
��-�ϊ��͑����ϐ��̖��O��ς���ϊ��ŁA��-�ϊ��i�Ȗ�j�͊��K�p�ł��B
��-�ϊ��͂��ׂĂ̈����œ����l��Ԃ����͓����ł���i���̊O�����j�Ƃ�����̂ł��B
��-�ϊ��̗�̓�x.fx �� ��y.fy �ł���A��-�ϊ��̗��(��x.fx)3 �� f3�ł���A��-�ϊ��̗�� ��x.fx �� f�i�A��x��f�Ŏ��R�łȂ��Ƃ��j�ł��B
Lisp ���ɏ����̂ł���A(lambda (x) (f x))��(lambda (y) (f y))�A((lambda (x) (f x)) 3)���if 3)�A(lambda (x) (f x))��f�ł��B
�Ɍv�Z�͂���3�̋K�������Ōv�Z���܂��B
���ɃJ���[���Ƃ́A�����̈������������A1�����̊��ɕϊ����邱�Ƃł��B
�ŏ��̈����������ɂ��āA���̊��͎c��̈�����������Ԃ��܂��B
�Ɏ��ł̓�x.��y.fxy�ƃJ���[���i1�������j���ĕ\�����܂��B�܂���x.��y.fxy����xy.fxy�Ɨ��L���邱�Ƃ�����܂��B
Lisp ���ɕ\�������(lambda (x y) (f x y)) �� (lambda (x) (lambda (y) ((f x) y)))�ɕϊ����邱�Ƃł��B
�܂��Ɍv�Z�ł͐��l���ȉ��̗�̂悤�ɃɎ��ŕ\���ł��܂��B������`���[�`���ƌ����܂��B
��. 0=��x.��y.y, 1=��x.��y.xy, 2=��x.��y.x(xy), ..., n=��x.��y.x(x(...(xy)))...)�B
���̂Ƃ��A1�����Z������SUC���� ��x.��y.��z.y(xyz)�ƂȂ�܂��BSUC(0)��1�ɂȂ�ASUC(1)��2�ɂȂ邱�Ƃ��m���߂Ă݂Ă��������B
---���܂�---
�ESUC(0)=1, SUC(1)=2�ƂȂ邱�Ƃ̊m�F
SUC(0) = (��x.��y.��z.y(xyz))��x'.��y'.y' = ��y.��z.y((��x'.��y'.y')yz) = ��y.��z.y((��y'.y')z) = ��y.��z.y(z) = ��x.��y.xy = 1
SUC(1) = (��x.��y.��z.y(xyz))��x'.��y'.x'y' = ��y.��z.y((��x'.��y'.x'y')yz) = ��y.��z.y((��y'.yy')z) = ��y.��z.y(yz) = ��x.��y.x(xy) = 2
�E����� Lisp ���ɂ��Ċm�F
0 = (lambda (x) (lambda (y) y))�ASUC = (lambda (x) (lambda (y) (lambda (z) (y ((x y) z)))))�ƂȂ�A
SUC(0) = ((lambda (x) (lambda (y) (lambda (z) (y ((x y) z))))) (lambda (x') (lambda (y') y'))) =
((lambda (y) (lambda (z) (y (((lambda (x') (lambda (y') y')) y) z))) = ((lambda (y) (lambda (z) (y ((lambda (y') y') z))) =
(lambda (y) (lambda (z) (y z))) = (lambda (x) (lambda (y) (x y))) = 1�ƂȂ�܂��B�E�E�E���ʂ̐����Ԉ���Ă��Ȃ�������̂ł����B
---���܂��I���---
���̂悤�ɃɌv�Z�ł͒l�����������Ɏ��ŕ\���ł��܂��B
�܂��A�Ɍv�Z�̓`���[�����O���S�ł���A�`���[�`�E���b�T�[�����ۏ����Ȃǂ̏d�v�Ȑ���������܂��B
�����̕]���������邩�Ƃ������ł��B
�]����x�������邱�ƂŁA���̕]���ʂɂ���@����炷���Ƃ��ł��܂��B
�ʏ�̕]���헪�ł́u�����D�� innermost�v�u�����D�� leftmost�v�헪�Ŏ�������Ă��܂����A
���̕]���헪�ł́A(defun foo (x y z) (if (eq x y) z)) �̂Ƃ��Ax �� y ���������Ȃ��Ƃ��� z ��
�]�����Ă��܂��܂��B
���̌��ʁA�Ⴆ�A(foo 1 2 (tarai 15 10 5))�ł�(tarai 15 10 5)�̕]�������ʂɂȂ�܂��B
������������邽�߂ɁA�F�X�ȕ]���헪���l�����Ă��܂��B
��ԁA�ȒP�Ȃ��̂�(a)�u�O���]�� outermost�v�ŕ]������헪��A
(b) �v���O���}���x���]�������������I��������헪�A
(c) �܂��v���O��������͂��āA�K�{���i�K���]�����K�v�Ȉ����j�ł��� x �� y �݂̂�]������u�K�{�]�� call by need�v�헪�Ȃǂ�����܂��B
����͊��^�v���O���~���O�̖{���ł͂���܂��A�����I�Ɏ��s���邽�߂̃e�N�j�b�N�̈�ŁA�S�̍����b��ɂȂ��Ă��܂��B
���^�v���O���~���O�͊�{�I�ɂ͕��s(Concurrent)����ƕ���(Parallel)���삪�\�ŁA
�܂��X���b�h�Z�[�t(thread safe)�ł���A���G���g�����g(reentrant)�ł��B
����̓O���[�o���ϐ����������A��Ԃ��������A�đ���Ȃǂɂ�镛��p�������Ȃ�����ł��B
�����������Ȋ��^�v���O���~���O�ȊO�ł́A�u�����v�̕���p�͎g���ł��傤����A
�葱���^�v���O���~���O�܂ł͂Ȃ��ɂ���A���s�������\�ɂ��邽�߂ɂ́A�����͐��䂪�K�v�ɂȂ�ł��傤�B
����͋t�ɍl����A���s�ɓ��삳�������ӏ��͏����Ȋ��^�v���O���~���O�����邱�ƂŁA
�ςȐ����s�v�ɂ��邱�Ƃ��ł��܂��B
�{���ł�����p�̓o�O�̉����ł���A���̃o�O��������͍̂����̒��̍����������邭�炢����Ȃ��Ƃł���ƌ����܂����B
�������A�܂����������Ȃ��悤�Ɋ����Ă��܂��B
�����Ƃ����ƕ���p�̋��|���x��A�����A���ׂ������������m��܂���B
�{���Ő��������悤�ɎQ�Ɠ��ߐ��������^�v���O���~���O�ł́A����p���l�����Ȃ��Ă����̂ŁA
�����Ȃ��̂�P���ɒu�������邱�Ƃ��ł��܂��B
����ɂ��A�v���O�������`���I�Ɂi���w�I�Ɂj��舵���̂��e�ՂɂȂ�܂��B
���^�v���O���~���O�͌`����@�Ƃ��܂��}�b�`���܂��B
�{���́A���^�v���O���~���O���̂��̂̋L���łȂ��ALisp ����̋L���ł����̂ŁA
���^�v���O���~���O�̗��_�ƌ��_���ӏ������ɂ��āA���_�ƕt���������@���ꌾ�ōς܂��Ă��܂��B
��͂�A�����͂����Ƌ�̗�����āA���^�v���O���~���O�̗��_�ƌ��_�����������āA���]�A�����A���E�����������̂ł����B
����́u���^�v���O���~���O�͖{���̂Ƃ���A�ǂ���Hkwsk�v�ł��傤���B
�`���[�`�E���b�T�[���iChurch-Rosser Property: CR���j�Ƃ́A�����������n�iTerm Rewiting System:TRS�j�ɂ����āA
�� t1 �� t2 ���L����ŏ�����������Ƃ��At1 �� t2 ���������鍀 t3 ������Ƃ��������ł��B
�܂�ACR��������ƁA�����_�v�Z�̃��Ȗ�i�����������j���������������ɊW�Ȃ��K�p�ł���̂ŁA
������œK���ɂ����āA�d�v�Ȑ����ɂȂ��Ă��܂��B
�ǂ̂悤�ȏ��������K���̂Ƃ��ɁA����CR�����ۏł���̂��́A�F�X�ƌ������Ȃ���Ă��܂��B�ȉ��ɂ��̗�������܂��B
Gomi,H., Oyamaguchi,M. and Ohta,Y.: On the Church-Rosser Property of
Root-E-overlapping and Strongly Depth-Preserving Term Rewriting Systems,
Trans.IPS.Japan, vol.39, No.4, pp.992-1005(1998).
Gomi,H., Oyamaguchi,M. and Ohta,Y.: On the Church-Rosser Property of
Non-E-overlapping and Strongly Depth-preserving Term Rewriting Systems,
Trans.IPS.Japan, vol.37, No.12,pp.2147-2160(1996).
�܂� CR���ƂƂ��ɁA�d�v�Ȑ����Ɂu��~���v������܂��BTRS ����~���邽�߂̏����A�܂胉���_�v�Z�̃��Ȗ�~���邽�߂�
�����Ɋւ��錤���������Ȃ���Ă��܂��B
�����̍��ڂɊւ��āA�₳�������I�`���d����ł��܂���B����A����������悤�ɂ��܂��̂ŁA���҂����������B
�����ċA�Ƃ́Aif ���̍ċA���i�ċA�Ăяo���������Ă��鍀�j�̃g�b�v���x���i�ō��j�̊����������g�ƂȂ��Ă�����̂ł��B
�܂�A(defun foo (n) (if (= n 0) ... (foo ...))�̌`�ɂȂ��Ă���ċA�ł��B
�����ċA�ɂȂ��Ă���ƁA�ċA�ŏ����X�^�b�N�T�C�Y���������A�܂��Ō�̍ċA�Ăяo�����P���� go to ���ɍœK�����邱�Ƃ��\�ł��B
Scheme �ł͌���d�l�Ŗ����ċA�̍œK��������d�l�ɂȂ��Ă��܂��B
�E�E�E�����ċA���͂͌���C���v�������^�̘r�̌������Ȃ̂ɋ`���ɂȂ��Ă���Ƃ��낪���B
�Ⴆ�A�K�� fact �̒�`�� (defun fact (n) (if (<= n 1) 1 (* n (fact (- n 1)))))�̂Ƃ��A�����ċA��
(defun fact-tail (n) (fact-tail2 n 1))
(defun fact-tail2 (n f) (if (<= n 1) f (fact-tail2 (- n 1) (* n f))))
�ƂȂ�܂��B
�܂��t�B�{�i�b�`���v�Z fib �̒�`�� (defun fib (n) (if (<= n 1) n (+ (fib (- n 1)) (fib (- n 2))))) �̂Ƃ��A�����ċA��
(defun fib-tail (n) (fib-tail2 n 0 1))
(defun fib-tail2 (n f0 f1) (if (< n 1) f0 (fib-tail2 (- n 1) f1 (+ f0 f1))))
�ƂȂ�܂��B
�����ċA�� go to ���ɕϊ����Ȃ��Ă��A�ċA�̃X�^�b�N�͌������܂��̂ŁA���ꂾ���Ō��ʂ�����܂��B
�Ⴆ�A�K�� fact �͌��̂܂܂ł���A(fact 153)�܂ł����v�Z�ł��Ȃ������̂��A�����ċA�ɂ���� 198�܂Ōv�Z�ł��܂��B
ISLisp>(fact-tail 198) 19815524305648002601818171204326257846611456725808373449616646563928629396065410 62613829859326594532422555809394270449322255383895082002776537504082796055103300 15793284111386240552007272342323020465242271420611379865359604881481118913950814 67526982493475408477527124840709196781511817187496273890924527108598562553359394 406400000000000000000000000000000000000000000000000
mapcar �ɂ��Ă͖{���ŏЉ�܂������A����ƑɂȂ��Ă��� reduce �ɂ��Ă�
�y�[�W���̊W�ŏЉ�Ă��܂���ł����B������ map �� reduce �͍��K���֗̕��ȗ�Ƃ��āA
�����ĉ������֗��ȋ@�\�ł��B
���� Common Lisp �̊� map �� reduce �̗�������܂��B
(map 'list #'+ '(1 2 3) '(10 20 30)) �� (mapcar #'+ '(1 2 3) '(10 20 30)) �� (list (+ 1 10) (+ 2 20) (+ 3 30)) �� (11 22 33)
(reduce #'+ '(1 2 3 4 5)) �� (+ (+ (+ (+ 1 2) 3) 4) 5) �� 15
�܂��Areduce �̃G���[�`�F�b�N�����ł̎����͈ȉ��̂悤�ɂȂ�܂��B
(defun reduce (fun list) (if (= (length list) 2) (funcall fun (car list) (car (cdr list))) (reduce fun (cons (reduce fun (list (car list) (car (cdr list)))) (cdr (cdr list)))) ))
�v���O�������ɁA1 + 2 �������A�ǂ�ȃR���p�C���ł� �R���p�C�����Ɏ��O��
�v�Z���āA3 �̒l������R�[�h�ɓ����ł��傤�B
����Ɠ��l�ɁA�Ⴆ�Af(1, g(2)) �̂悤�Ȃ��ׂĂ̈������萔���萔������Ȃ鍀�u�萔���v�����O�v�Z�������Ȃ�ł��傤�B
�Ⴆ�Af(1, 2) �� f(g(x), g(2))�Afoo(1).bar(x) �ƂȂ��Ă���A���ꂼ�� f(1, 2) �� g(2)�Afoo(1) �̒萔�������O
�v�Z�������Ȃ�ł��傤�B
�������A����p�����邩���m��Ȃ�����ł́A���̎��O�v�Z���s���ƁA���ʂ��قȂ���
���܂��댯��������܂��B���̂��ߎ��O�v�Z�͐T�d�ɂȂ炴��܂���B
�Ⴆ�Af(g(x), g(2))�� g(2)���R���p�C�����Ɍv�Z����ƁA��Ŏ��s���� g(x)���v�Z����
���ʂ̕���p���y���A�Ⴄ�l�ɂȂ邩���m��܂���B
�œK���Ȃǂ̂��߂Ɉ����̕]��������ۏ��Ȃ�����ł́A�������A�萔���̎��O�v�Z��
�ł��܂��B���ʂ�����Ă��v���O���}�̐ӔC�ɂȂ�܂��B�E�E�E�������ł��B
�������瓾���鋳�P�́A(1) ����p���g��Ȃ��悤�ɂ��邩�A(2) �R���p�C��������悤��
�萔���̓v���O���}���������g�Ŏ��O�v�Z���Ă������ɂȂ�܂��B
�萔���Ȃ�āA�g��Ȃ���Ƃ��������A���\�g���Ă��܂��̂ŁA�����ӂ��������B
FRP �͊��^�v���O���~���O�ƒ�������T�O�ł����A���^����ŗ��s���Ă��܂��̂ŁA�����ŏЉ�܂��B
���A�N�e�B�u�v���O���~���O�Ƃ́A�l�̊W���ÖٓI�ȍČv�Z�ɂ���ď�ɓ����ɕۂ��̂ł��B
�Ⴆ�Aa == b + 1�Ƃ����W���`����Aa �� 3 �� 4 �ɂȂ����Ƃ��� b �� 4 �� 5 �ɈÖٓI�ȍČv�Z�ɂ���āu�����I�Ɂv�Ȃ���̂ł��B
��L�͊W�Ƃ��̎������Ɍ����Ă��܂����A����������Aa �̒l�ɂ���� b �̒l�͂��� a + 1 �ɂȂ��Ă��܂��B
���ۂ̎����ł͍Čv�Z�͌����悭���{���܂��B
C �Ȃǂ̃z�X�g����ƑS�����W�ȒP�Ȃ鏑�������}�N���łȂ��A
Lisp ���ꂻ�̂��̂Ń}�N���W�J�I�ɂł��鋭�͂ŏ_��ȃ}�N���@�\�������Ă��܂��B
���̂��߁ALisp ���ꎩ�g�̊g�����e�Ղɂł��܂��B
����͕ʂ̖��������ł��܂��B
Lisp �ɂ͐F�X�ȕ����A���h������܂����A���̋��͂ȃ}�N���@�\�ɂ��A�݊��p�b�P�[�W���C�y�ɍ��܂��B
�Ⴆ�AISLisp �� Common Lisp �p�b�P�[�W�����̂��\�ł��B
Common Lisp �� dolist �̃}�N����`�́AISLisp �ł͈ȉ��̂悤�ɂȂ�܂��B
���̑��� Common Lisp �݊��p�b�P�[�W���}�N����`�̃T���v���Ƃ��āA��ŃT���v���v���O�����Ƃ��āA�Љ�Ă��܂��B
(defmacro dolist (lists &rest forms) `(let ((list ,(second lists)) (,(car lists) nil) ) (while list (setq ,(car lists) (car list)) ,@forms (setq list (cdr list)) )))
Lisp �͎��s���Ɋ��I�ɒ�`�ł��܂��B �I�u�W�F�N�g�w���@�\������ Lisp �ł̓N���X�����I�ɍĒ�`�\�ł��B
S��(Symbolic Expression)������ Lisp �̍\���ł���AEV-Lisp �̍\��(f x y)�̂悤�ɏ����܂��B
M��(Meta Expression)�̓}�b�J�[�V�[�������ALisp �̍\���Ƃ��čl���Ă������̂ŁAEVQ-Lisp �̍\���I�� f[x;y]�̂悤�ɋL�q���܂��B
S���͓����\���ł���A�Ӗ��_���L�q������̂Ƃ��čl���Ă��܂����B
���݂́A�\���������\�����Ӗ��_�� S���ŕ\�����܂��B
Common Lisp �Ȃǂœ������ꂽ����� Scheme �ɐ̂��炠��p���͏d�v�ȊT�O�ł��B
���҂̊W���܂߂Ċw�ԕK�v������܂��B
�����̃v���O���~���O����ł͊��̕Ԃ��l��1�ł��B
2�ȏ�̒l��Ԃ��Ƃ��́A�u�ւ������v�Ȏ����ŁA����p�����҂���������n���Ƃ��A
�q�[�v�̈���g�p���ă������ʌ������ĕԂ��Ƃ��̎����ɂȂ�܂��B
Common Lisp �ł͕����̒l��Ԃ��@�\������܂��B�������A�q�[�v�̈���g���܂���B
���S���đ��l��Ԃ��Ă��������B
Lisp �̃x���`�}�[�N�v���O�����Ƃ��ėL���Ȃ̂� tarai��������܂��B
�|����Y��1976�N�ɍ쐬�������̂ŁA
(defun tarai (x y z) (if (<=x y) y (tarai (tarai(1- x) y z) (tarai (1- y) z x) (tarai (1- z) x y))))
�ł��B�ċA���Ő��������s����܂��B
Lisp �̓I�u�W�F�N�g�w���@�\�̎����̎�����Ƃ��Ă��g���Ă��܂����B
Common Lisp �� CLOS �͑��̊��Ŏ�������܂������AFlavors �̃I�u�W�F�N�g�w���@�\���G�|�b�N�ł��������Ƃ��Љ���������Ǝv���Ă��܂��B
CLOS �� ILOS �̎��K�p�\���\�b�h�̗D�揇�ʂɂ���āAif ���Ȃ��v���O���~���O�i�p�^�[���}�b�`�j���g�߂܂��B
�Ⴆ�A������ 0 ���������V���O���g���N���X���`����A�����̃N���X�Ɣ�r���āA������I�Ȃ̂ŁA�V���O���g���N���X���D�悳��܂��B
����ɂ���āA�Ⴆ�A�K���(singleton 0)�̃N���X�̃��\�b�h�i���̊��j��(integer)�̃N���X�̃��\�b�h���`����Aif�����s�v�ɂȂ�܂��B
�����ƌ����A�P���ȃp�^�[���}�b�`���������ƕ��G�ȃ}�b�`���O�A���S���Y�����g�߂܂��B
Lisp �͏����Ȋ��^�v���O���~���O����łȂ��Ƃ����]��������܂����A
�t�ɍl����A���^�v���O���~���O����̃p���_�C���Ǝ葱���^�i���ߌ^�j�v���O���~���O����̃p���_�C����
���킹�������}���`�p���_�C�����ꂾ�Ƃ������蕶��������ƐϋɓI�ɏ����ׂ������������m��܂���B
�v�͖��ɉ������A�œK�ȃv���O���~���O�p���_�C���Ńv���O���~���O�ł���悤�ɁA�v���O���~���O����͂��̎d�|�������̂������Ǝv���܂��B
����A�p���_�C�����K�����邱�ƂŁA�쐬�����v���O������Ǘ�������@������܂����E�E�E�D�݂ł͂���܂���B
Common Lisp �̌���d�l��1000�y�[�W���z������̂ɂȂ��Ă��܂����A����AScheme �̌���d�l�͐�10�y�[�W��������܂���B
�܂��� Lisp �͐��E�ő�̌���ł���A���E�ŏ��̌���ł�����܂��B
CLtL2��1000�y�[�W�ȏ゠��܂��̂ŁA�����ł��܂��B
Common Lisp �ɂ�����^�C�v�ƃN���X�A�\���̂̊W�͂�͂�I�[�o�[�X�y�b�N�̂悤�ȋC�����܂��B
�����Ƃ��܂��O�p�W���ł��邱�Ƃ��ł����낤�ɁE�E�E�W���[�N�l�^�ɂ��H
�V���{�������l����A�v���p�e�B��1�݂̂ŊǗ����� Lisp-1 ���A2�ȏ�ŊǗ����� Lisp-2 ���̘b�ł��B
�ŋ߂� Lisp �� Lisp-2 �ŁA�l�Ɗ��Ȃǂ�ʂɎ����Ƃ��ł��܂��B
����ALisp-1 �ł� (defvar automobile '��)�͂ł��Ă��A(defvar car '��)�͂ł��܂���B��ʐl����͕s�v�c�����܂��B
�������ALisp-1 �̕��̓������t�b�g�v�����g�͏������̂ł����A���ł͍��ׂȂ��ƂɂȂ�܂����B
�Ⴆ�Aappend �͕���p�������Ȃ����߂ɑ�1�����̃��X�g���R�s�[���܂��B
��������p�����Ȃ��Ƃ��͕���p�ł� append �ł��� nconc ���g�����ƂŁA�R�s�[�̖��ʂ��Ȃ��܂��B
���̂悤�� Lisp �v���O���~���O�ł̓p�t�H�[�}���X�`���[�j���O�̂��߂ɁA����p�ł̊����g�����Ƃ�����܂��B
Lisp �ƌ����� GC�BGC �ƌ����� Lisp�B�Ƃ������炢�ALisp �� GC �͈�̉�����Ęb��ɂȂ��Ă��܂��B
�����AGC �̎�����Ƃ��Ă̖������ʂ����Ă��܂����BGuy L.Steel �� SUN(Oracle)�� Java �� GC �̊J���Ɍg������̂����̗���ł��傤�B
�{���ł��G��܂������A�����f�[�^�\���ł��� S ���Ńf�[�^���v���O�������\�����邽�߂ɁA ���I�ȃv���O���~���O�A���Ƀ��t���N�V�����i�v���O�����̓��I�ύX�j�����̌���AJava �� Ruby, Python �Ȃǂ� ���t���N�V�����@�\�̂悤�Ȗʓ|�Ȏ������o����K�v�͂���܂���B���R�ȗ���Ŏ��s�ł��܂��B
��ʓI�� Lisp �����n�ł͖���������(bignum)���T�|�[�g���Ă��܂��B
�����ƃV�[�����X�Ɏg���܂��B�����Ő����Ɩ����������͎����I�ɕϊ����Ă��܂��B
�X�^�b�N�ƃq�[�v�T�C�Y�ɑ傫���͐�������܂��B
�Ⴆ�AWindows �ł� OKI ISLisp �ł���A153�̊K�悪�v�Z�ł��܂��B
����� bignum �̐����ł͂Ȃ��A�K��v�Z���̃X�^�b�N�T�C�Y�̐����ł��B
�Ⴆ�Ό�q����Ă��閖���ċA�ɂ����K��v�Z�ł�198�܂Ōv�Z�ł��܂��B
ISLisp>(defun fact (n) (if (<= n 1) 1 (* n (fact (- n 1))))) FACT ISLisp>(fact 153) 20063439050956823947782887469891171856624614961616117193423109928484094602523809 23396132940626035884355303931450486630471730519135077116322163056671295549006202 96603188543122491838966881134795135997316305640071571629943041039657861120000000 000000000000000000000000000000
�ĕϐ��� Common Lisp ���瓱�����ꂽ�T�O�ŁA���܂ł� Lisp ���ϐ��ɑ��������� setq �ł������A
������g�����āA�ϐ������łȂ��A���ׂĂ̏ꏊ�i�ĕϐ��j�ɑ���ł���悤�ɂ��� setf ����������܂����B
�Ⴆ�A(setf (car (cdr list)) 10)�̂悤�Ɏg�����Ƃ��ł��A����� list ��2�Ԗڂ̗v�f��10�ɂ�����̂ł��B
�܂� defsetf �ɂ��Asetf �̓��삪��`�ł���悤�ɂȂ�܂����B������ȒP�Ȍ`�Œ�`������̂ƁA
�}�N����`�Ɠ��l�ȕ��@�Œ�`����2��ނ��T�|�[�g����Ă��܂��B
Common Lisp �ȍ~�A���̔ĕϐ��̍l���͑����� Lisp �₻�̑��̌���ɉe����^���Ă��܂��B
���^�T�[�L�����[�͓��{��ł́u������I�ȁv�܂��́u���^����I�ȁv�Ɩ�Ă��܂��B
Lisp ���ł��� apply �� eval �́ALisp �C���^�v���^���̂��̂ł��B
���� Lisp �C���^�v���^�̈�̊��Ƃ��� apply �� eval ������Aapply �� eval �̓C���^�v���^�̈ꕔ�ł��B
���̂悤�Ɏ���������I�ɂȂ��Ă��邱�Ƃ����^�T�[�L�����[�ƌ����܂��B
���̂悤�ȃ��^�T�[�L�����[�� Lisp �̈Ӗ��_�͕s���_�Ƃ��ė^������ƍl�����Ă��܂��B
�{���ł��N���[�W���͊�������߂�ƌ����܂����B
�N���[�W���������߂���́A�ϐ����̂��̂�����߂܂��B�ȉ��̗�����Ă����܂��B
; ��̃N���[�W���͓��� x ������߂܂� ISLisp>(defglobal c (let ((x 10)) (cons (lambda () x) (lambda (y) (setq x y))))) C ISLisp>c (#<UFUNCTION 0026F636: #<LAMBDA>> . #<UFUNCTION 0026F436: #<LAMBDA>>) ISLisp>(apply (car c) ()) ; �u�����߂� x�v�̒l�� 10 �ɂȂ��Ă��܂� 10 ISLisp>(apply (cdr c) '(20)) ; �u�����߂� x�v�� 20 �������܂� 20 ISLisp>(apply (car c) ()) ; �u�����߂� x�v�̒l�� 20 �ɂȂ��Ă��܂� 20
���ɂ��̃N���[�W���̎������l���Ă݂܂��B�������l���邱�ƂŁA���N���[�W���̂��Ƃ��������Ă��܂��B
��L��(car c)�̃N���[�W���������߂��̂́A���̒l��10�ł��郍�[�J���ϐ� x �ł��B����� (x 10)�ƕ\�L���܂��B
����(cdr x)�̃N���[�W���������߂��̂����� x �ł��B�����(x 10)�ƕ\�L���܂��B
���̓��(x 10)���������̂ł���悤�ɂ���A�ǂ��炩����Œl��ς���A��������ł�����p�Œl���ς��܂��B
�N���[�W���̈�̎������@��(x 10)�̃��X�g�����́������A�h���X�̃��X�g�ɂ�����@������܂��B
����̓��X�g�Ő������܂������A���ۂ̓x�N�^�[�̕��������ł��傤���A�����ł̓t�@�[�X�g�N���X�I�u�W�F�N�g�ɂ���K�v������܂���B
Lisp �̃V���{���̓V���{���e�[�u���ɂ���ăC���^�[������Ă��܂��B
�V���{���e�[�u���Ƃ͖��O�̎����ʂ�A�V���{�����Ǘ����Ă���e�[�u���ŁA���̎����̓n�b�V���e�[�u���ł��B
�V���{�����C���^�[������Ă���Ƃ́A�V���{���e�[�u���ɓo�^����Ă��邱�Ƃł��B
�V���{���́A�V���{���e�[�u���̎����ł���n�b�V���e�[�u���ɂ���āA���̗B�ꐫ��ۏ��Ă��܂��B
�܂�A�V���{���̖��O�������Ƃ��A�Ⴆ��(eq 'symbol1 'symbol1)�� t ��Ԃ��܂��B
�V���{�����C���^�[������邱�Ƃɂ���āA�V���{���̓������肪�����ɂł��܂��B
�������t�ɃV���{�����C���^�[������Ƃ��ɂ͎��Ԃ��|����܂��B
�C���^�[���̋t�̃A���C���^�[��������܂��B����̓V���{�����V���{���e�[�u������폜���邱�ƂɂȂ�܂��B
�����܂Řb���Ε����邩���m��܂��A�C���^�[���� Lisp �����̑傫�ȃL�[�ɂȂ�܂��B
���̎����̃L�[�̓V���{���e�[�u���̎����ł���n�b�V���e�[�u���ł��BLisp�C���v�������^�ɂƂ��Ă͋�J�̂�����������Ƃ���ł��B
�܂��A�X�R�[�v�͎Q�Ƃ̗L���͈͂̂��ƂŁA�G�N�X�e���g�͎Q�Ƃ̗L�����Ԃ̂��Ƃł��B
���L�V�J���X�R�[�v lexical scope �Ƃ́A�R���p�C���^����ł���A���ʂ̃X�R�[�v�ł��B
�P���Ɏ����͂����ŋ��܂�L���͈�(scope)�ŁA�̂���̗��j����X�R�[�v�ł��B
�Ⴆ�A(lambda (x) (lambda () x)) �̂Ƃ��Ax �͊O���̃����_�Ő錾���ꂽ���̂ł��B�N���ǂ����Ă������ł���ˁI
���L�V�J���X�R�[�v�� Scheme �ō̗p����ACommon Lisp �ȍ~�� Lisp �ł́A���̃��L�V�J���X�R�[�v���̗p���Ă��܂��B���Ă��ꂾ�����Ɠ�����O�̂��Ƃ̂悤�ł���ˁH
�������A�̂� Lisp�A��ɃC���^�v���^�œ��삷�邱�Ƃ���ړI�ł��� Lisp �ł́A���L�V�J���X�R�[�v�łȂ��X�R�[�v������܂����B
�����ƈ������ƂɁA�̂� Lisp �ł̓C���^�v���^�̂Ƃ��ƃR���p�C�������Ƃ��̃X�R�[�v���Ⴄ�Ɉ��Ȃ��̂�����܂����B
�C���^�v���^�ł́A�_�C�i�~�b�N�X�R�[�v�i�����X�R�[�v�{���I�G�N�X�e���g�j�ŁA�R���p�C������ƃ��L�V�J���X�R�[�v�ɂȂ�Ƃ����Ɉ��Ȃ��̂ł����B
����̓C���^�v���^�ł̓��L�V�J���X�R�[�v�����̂��ʓ|����������ł��B����ɂ��Ắu�N���[�W���͋�J�����v���Q�l�ɂ��Ă��������B
���L�V�J���X�R�[�v�͏�q�������̂ł����A����ȊO�ɖ����X�R�[�v infinite scope ������܂��B
�����X�R�[�v�̓G�N�X�e���g�i�L�����ԁj���ł���A�ǂ�����ł��Q�Ƃł�����̂ł��B
�G�N�X�e���g�ɂ͓��I�G�N�X�e���g dynamic extent ������A����͓���̎��Ԕ͈͂ŗL���Ƃ������̂ł��B
Common Lisp �̗�ł� with-open-file (�t�@�C�����I�[�v�����Ă���ԗL��)������܂��B
����� Common Lisp �ł̓X�y�V�����ϐ��AISLisp �ł͓��I�ϐ� dynamic variable �̃G�N�X�e���g�������ł��B
�̂� Lisp �̃C���^�v���^�ŁA���[�J���ϐ��i�����j�̃G�N�X�e���g�������ł����B
[�̂� Lisp �̗�] (setq x 10), (defun foo (x) (bar)), (defun bar () x)�Ƃ����Ƃ��A(foo 20)�̒l�� 10 �łȂ� 20 �ł����B
�G�N�X�e���g�ɂ͂��̑��ɖ����G�N�X�e���g infinete extent ������܂��B���ł��Q�Ƃ��L���ɂȂ���̂ł��B
�N���X�̃C���X�^���X�Ȃǂ̈�ʂ̃f�[�^������ɑ������܂��B
Lisp �I�u�W�F�N�g�͎Q�Ƃ��Ȃ��Ȃ�� GC �ɂ���ăI�u�W�F�N�g�͏��ł��܂����A���̂Ƃ��������G�N�X�e���g�ƌ����܂��B
�[������ deep binding �Ɛ��� shallow binding �������m�ł��傤���B
���t�ʂ�ɐ[�������Ɣ��邩�A�ɂ����邩�ł��B
�E�E�E�ł͂Ȃ��āA���I�X�R�[�v�i�����X�R�[�v�{���I�G�N�X�e���g�j�̂Ƃ��̎������@�ł��B
�����ŗ���l���Ă݂܂��B(defun foo (x) (bar)) (defun bar () (baz)) (defun baz () x)���l���Ă݂܂��B
�������A���L�V�J���X�R�[�v�̂Ƃ��́Abaz �� x �̓O���[�o���� x �ł��B
�������A���I�X�R�[�v�̂Ƃ��́A(foo 10)�ƌĂяo���ꂽ�Ƃ��́Abaz �� x �� foo �� x �ɂȂ�A10�ł��B
���̂悤�Ɏ��s���� x �����肳���̂ŁA���I�X�R�[�v�i���I�G�N�X�e���g�j�ƌĂ�܂��B
���̓��I�X�R�[�v�̎������l���Ă݂܂��B
�܂��A���̂Ƃ��̃X�^�b�N���ǂ��Ȃ��Ă��邩������ƁAfoo �̃t���[���̏�ipush ��������Ƃ����Ƃ��j��
bar �̃t���[��������A���̏�� baz ������܂��B
���ʂɍl����������Ƃ��ẮA���̃X�^�b�N�� baz �t���[������ foo �̃t���[���ɂ��� x ��������܂�
�t���[���P�ʂŃX�^�b�N���ォ�牺�֒H���Ă����܂��B������X�^�b�N�H��ł��B
���ꂪ�[�������ł��B�X�^�b�N��[���[���H���Ă������߂ɁA���̂悤�ɌĂ�܂��B
���̎����͊ȒP�ł��B�T���͒P���ȌJ��Ԃ��Ŏ����ł��܂��B
������߂�Ƃ��ɃX�^�b�N����ނ̂��ȒP�ł��B�X�^�b�N�|�C���^��t���[���|�C���^��߂������ł��B
������x�̒T���� O(n)���|����܂��B���̌Ăяo���̐[���ɔ�Ⴕ�܂��B�[�����܂��B�s���ł��B���C�̒�ɒ��݂܂��B
����ɑ��āA�����Ƃ͂ǂ�Ȏ����ł��傤���B
�����͂ǂ�ȕϐ��T����1��Ō�������̂ł��B
���̎������@�́A���I�ϐ��i�_�C�i�~�b�N�X�R�[�v�����ϐ��BCommon Lisp �ł̓X�y�V�����ϐ��j��
�O���[�o���ϐ��Ɠ����悤�ɃV���{���e�[�u���ɓo�^���܂��B
����œ��I�ϐ��̒T���̓O���[�o���ϐ��Ɠ��l�ɃV���{���e�[�u��������o�������ł��B
�V���{���e�[�u���̓n�b�V���e�[�u���Ŏ�������Ă��܂�����A�������O(1)�ł��B
�����������͕��G�ɂȂ�܂��B������߂�Ƃ��ɃX�^�b�N����݂܂����A���̂Ƃ��V���{���e�[�u���ɓo�^����Ă���
���I�ϐ��̒l��ݒ肵�����Ȃ��Ă͂����܂���B�������ʓ|�ł��B�����Ď��s���Ԃ��|����܂��B
���������I�ϐ��̒T���������̂ŁA���ʂ͂�����̐����Ŏ�������Ă��܂��B
���Ȃ��͂ǂ���ő������܂����H
Common Lisp �ł̓X�y�V�����ϐ��AISLisp �ł͓��I�ϐ��i�_�C�i�~�b�N�ϐ��j�ƌĂ��ϐ��́A�_�C�i�~�b�N�X�R�[�v�i�����X�R�[�v�{���I�G�N�X�e���g�j�����ϐ��ł��B
�_�C�i�~�b�N�X�R�[�v�ɂ��ẮA(23) �[�������Ɛ����A���Ȃ��̍D�݂́H���Q�Ƃ��Ă��������B
�ꌾ�Ō����A���I�ɃX�^�b�N�H������ĕϐ�����������̂ł��B���s���Ȃ��Ɖ��ɑ������Ă��邩������܂���B
���̃X�y�V�����ϐ��͂��̂悤�ɃJ�^�J�i�ŏ����ƁA�Ȃi�D�����ϐ��̂悤�ɕ������܂��B�X�y�V�����ł�����B
�������̂ł͂���܂���B�����ƁA���Ȃ��̏����ɉЁi�킴�킢�j�������ł��傤�B�f�o�b�O����Ƃ��ɁE�E�E
�N�����̃X�y�V�����ϐ������̂��H�i�}�U�[�O�[�X���Ɂj
Lisp �ɂ͐F�X�ȝ|������܂��B�\���K���₻�̈Ӗ��_�����łȂ��A���K convention �ƌĂ��|������܂��B
�����͂��̒��ň�ԑ�ȝ|�ɂ��ď����܂��B��ԑ厖�ȝ|�Ƃ́A���薽���K���ł��B�l�[�~���O�ł��B���ꂾ���ŁA�ǂ�قǂ� Lisper ��������܂��B
�Ⴆ�AC# �� Pascal - Delphi �Ƃ�������ŁA�����K���� Pascal �`���iFooBar �̂悤�ɃL���s�^���C�Y����`���j����{�ł��B
Java �͂�₱�����āA�N���X���� Pascal �`���A���\�b�h������ Camel �`��(fooBar �̂悤�ɍŏ��̒P��͏����� lower case �ɂ���`���j�A
�萔�� Snake �`���iFOO_BAR �̂悤�ɑ啶�� upper case �ŏ����A�A���� _ (�A���_�[�o�[)�ōs���`���j�ł��B
���̂悤�ɁA�l�[�~���O�͊e�v���O���~���O����̕����ɂȂ��Ă��܂��B
Common Lisp ���n�߂Ƃ��� Lisp �̃l�[�~���O�͂ǂ��Ȃ��Ă���ł��傤���B��͂�A�����ł����̃v���O���~���O����Ɣ�r���āA�َ��Ȃ��̂ɂȂ��Ă��܂��B
�܂��͎g���镶�����Ⴂ�܂��B-(�n�C�t���A�}�C�i�X�L���ő��)�Ȃǂ��g���܂��B����̓v���O���}�ȊO�ł͈�ʏ펯�ł��傤�B���̈Ӗ��ł� Lisp �ȊO�����������̂ł��B
���ɐ擪��������������n�܂��Ă����v�ł��B�����Ƌ�ʂ��邽�߂̕������ǂ����ɂ���Α��v�ł��B�Ⴆ�A1.2e0 �͐����ł����A1.2e0x �͖��O�ł��B
Lisp �ł͑啶���Ə������̋�ʂ͂��܂����A�f�t�H���g�ł͑啶���C���^�[���ł��B�������ŃC���^�[���������Ƃ��̓G�X�P�[�v�������g���܂��B
�Ⴆ�A|aBc|��\ab\c �̂悤�ɂ��܂��B�������ʓ|�Ȃ̂ŕ��i�͑啶���C���^�[���ɂȂ�܂��B
�����܂ł͋����I�Ȏd�l�ł��̂ŁA������ Lisper �S�������܂��B
Lisp �ł̓n�C�t�����g���܂��̂ŁA�P��̘A���� foo-bar �̂悤�ɂ��܂��B�Ⴆ�AILoveYou �łȂ��Ai-love-you �ł��B���ꂪ���̋K���ł��B
���̝|�́A�O���[�o���ϐ��̃l�[�~���O�ł��B*global-variable* �̂悤�ɁA* �A�X�^���X�N�ň݂͂܂��B���ꂪ���̋K���ł��B
�Ȃ��A* �ɂ͓��ʂȈӖ��͂Ȃ��A�P�ɖڗ�����������ł��B�����ƌ����A�O���[�o���ϐ����g�����߂ɂȂ�܂��B* ���p����������A�g���ȁI�Ƃ������Ƃł��B
Common Lisp �̃X�y�V�����ϐ����O���[�o���ϐ��̈��ł��̂ŁA���i�~�j�̈Ӗ��� * �ň݂͂܂��B
�萔�͈�ʓI�ȝ|�͂���܂���B+foo-bar+ �̂悤�� + �ň͂��l�[�~���O������܂����A�S����ʓI�ł���܂���i�����ς�j�B
���������͂� SNAMKE �`���ł��傤�B�B�B
�q����it �܂��� nil �̐^���l��Ԃ����j�́A����ɏq�� Predicate �� P ��t����̂��|�ɂȂ��Ă��܂��B�Ⴆ�Aintegerp �ł��B
�A�� Scheme �Ȃǂł͂��̌���ł͂���܂��A�������O�̋K���ł��B
���̓l�[�~���O�Ɋւ��ẮA�܂��܂��\�Ɨ��̝|������̂ł����A�����͂����܂łɂȂ�܂��B�B�B
Lisp �̌��߂ƌĂ����̂�����܂��B����͊��ʂł��B���ʂ̑����ł��BLisp �̊��ʂ��[�����āA���ꂪ Lisp �̐[���łɂȂ��Ă��܂��B
���̊��ʂ����₷�����邽�߂ɁALisper �̓z���C�g�X�y�[�X�A���ɃC���f���g���g���āA�����������Ă��܂����B
�������A���̃C���f���g���V���Ȑ킢�̖��J���ɂȂ��Ă��܂��B�܂�A�ǂ̂悤�ɃC���f���g�����邩�ŁA���h������܂��B�����ő���������܂��B
���̑����� Lisp �Ɍ��������Ƃł͂���܂���B�Â��� C ����ł����̐킢�͂���܂����B
K&R�h v.s. �z���C�g�X�~�X�h�̐킢���u�����܂����B
�ŋ߂ł́APASCAL - Delphi �̗����g�� C# �̃C���f���g�X�^�C���ƁA����AJava ���E�ŗ��s���Ă���X�Δh�ƌĂ�鑈��������܂��B
�v���O���������₷�����邽�߂̐킢�ł����A�݂ɂ��������ɂȂ��Ă��܂��B
Python �ł́A�������ł����A�t�ɑ傫�ȍ��͂Ȃ��A����قǐ킢�͂���܂���B
�c�O�Ȃ���ALisp �̐��E�ł��AC �� Java �قǂł͂Ȃ��ł����A���̃C���f���g�̐킢�͂���܂��B�X�Δh�Ƃ��ADelphi �h�Ƃ��̃X�^�C���ł͂���܂��A��͂�A���s�̈ʒu�ƁA
���s�̌�̋̌��A�܂�^�u�ɑ�������C���f���e�[�V�����̐킢������܂��B
����� Lisp �ł́A�����ʂƕ����ʂɋ�����ʒu�ɂ��Ă̐킢������܂��B
����A���`�o�́i�v���e�B�v�����g�j�͂��̃C���f���g�ɉe������܂��B
���l�ɐ��`���́i�v���e�B���[�_�j���e�����܂����A�ŋ߂ł́ALisp �v���O���������ʂ̃G�f�B�^�œ��͂��邱�Ƃ������A�G�f�B�^�Ɉˑ����܂��B
�Ȃ��A�G�f�B�^�ɂ��Ă͕ʂł��b�����Ă��������܂����A�������AEmacs �������߂ł��B
���̃C���f���g�ƃv���e�B�v�����g�ł̂����߂̃X�^�C���́A�����ł͏Љ�܂���B�@���푈�ɂȂ�܂��̂ŁA����ɂ��݂��܂���B
���ɓ����Ă͋��ɏ]�����Ƃ��A��͂�A�����ł��厖�ł��B�X�^�C���ɍS�肷���Ȃ��������������m��܂���B
�i�ڂ����j�ǂ����AEmacs �G�f�B�^��1���ŃX�^�C���͕ύX�ł��܂��̂ŁB
�ϐ� variable �Ƃ́A�l value ���i�[�ł���ꏊ�������̂ł��B
�ϐ��ɑ��鑀��͒l�Q�Ɓi�������Q�Ƃ��܂ށj�ƒl�ύX�i�����l�ݒ�Ɩ����������܂ށj�ł��B
�t�ɍl����A�l�Q�Ƃƒl�ύX�̊�����`����Ă���I�u�W�F�N�g�Ƃ݂Ȃ����Ƃ��ł��܂��B
����A���̍l���͕��ʂ̍l���ŁA�Ⴆ�A���r���[�Ȃ���AJava �� C# �Ȃǂɂ��A�Z�b�^����Q�b�^���Ƃ��āA�A�N�Z�b�T������`����Ă��܂��B
Lisp �͓�������A���� binding ����̂͒l�����łȂ��A�����_�������ʂ̒l�Ɠ��l�ɑ����ł��܂��B
�܂�ALisp �ł͕ϐ��Ɗ��͓������̂ł��B
�������Ă�����̂������_���̂Ƃ��͊��K�p���s���A���ʂ̒l�̂Ƃ��͉E�Ӓl�ł���Βl�Q�Ƃ��A���Ӓl�ł���Βl�ύX���s���܂��B
�܂� Lisp �͖{���I�ɒl�w���ł���A���w���i���^�j�ł����B
���� Lisp-1 �ł͂��̃C���[�W��������₷�����̂ł��B
�ϐ��͂��͂�l�����łȂ��A�l���i�[����ꏊ�������B���ł��܂��B�����҂Ɉ�C�ł��܂��B
�����҂͏����l�ݒ�A�l�Q�ƁA�l�ύX�A����������4�̊������܂��̂ŁA������g�������ł��B
Lisp �ł̓R���p�C�������ł���A���̊� compile �͊��P�ʂŎ��s���ɃR���p�C���ł��܂��B
�܂� Lisp �͓��I�����R���p�C�����\�ł��B
���ꂪ Lisp �̎��s���Ԃ��x���Ȃ錴�߂̈�ɂȂ��Ă��܂��B
�����R���p�C�����ł����ÓI�����N�����錾��Ɣ�r���āA�����ŋ�J����_�ł��B
���ɂ��������������l���Ă݂܂��B�ŏ��͊ȒP�ȕ��@���l���Ă݂܂��B
(1) �V���{���o�R�Ŋ������s
�Ⴆ�V���{���o�R�Ŋ��Ăяo����������@������܂��B�V���{���o�R�ł��̂ŁA�������A�N�Z�X��1������Ă��܂��A�x���ł��B
�x���`�}�[�N�̂悤�ȃv���O�����ł́A����͒v���I�Ȓx���ł��BC �v���O�����ɂ͌����ď��ĂȂ��ł��傤�B
�����������I�ȏ����� Lisp �����n�ł͂��̎������̗p���Ă�����̂�����܂��B
�����Ŏ��ɗ]�v�ȃ������A�N�Z�X�������ɍςޕ��@���l���Ă݂܂��B
(2) ���I�R���p�C���œ��I�����N
���I�R���p�C���������Ƃ��ɁA�V�����R�[�h���Ăяo���悤�ɁA���Ăяo���̔�ѐ�A�h���X���ڏ�����������@������܂��B
�܂�A���I�Ƀ����L���O������@�ł��B
���̃����L���O�̎����ł́A�R���p�C�����s�������x���Ȃ�܂����V�X�e���̃����J���g�����@�ƁA�ʓ|�ł�������Ń����J�������@������܂��B
����͕ʂ� Lisp �̍߁u������C���^�t�F�[�X�v�̎����ł������Ɠ������ɂȂ�ł��傤�B
�E�F�C�g���X�u�R�[�q�[�ł����ł����H�v
Lisper�uT�v(yes �̈Ӗ��� Lisp �̐^�̒l�ł��� T �Ɠ�����)
�E�F�C�g���X�u�g��(Tea)�ł��ˁv
�l�H�m�\�}�V���łȂ��ALisp �̃x���`�}�[�N�v���O�����ł���B
���̏؋��� Lisp �����ΕK���Atarai(�܂���tak)�����s���Ă����B
����w��̋L������������ł��A�x���`�}�[�N���J�Â���Ă����B
Lisp �̏q���(�^���l��Ԃ���)�́Aintegerp �� subtypep �Ȃǂ̂悤�� post-P (����ɏq�� Predicate �� P ��t����)������ł���B
Lisper�u�R�s�[����̂ł������R�s�s�v�i�����͂��҂��[�҂��H�j
Lisper�u���̕����� P �ł������s�s�v�i�����͂҂��[�҂��H�j
Lisp �𒆒u�L�@�ɂ��Ă݂�
(fact defun (n) ((n <= 1) if 1 (n * ((n - 1) fact))))
�ǂ��ł��傤���H���₷���ł��傤���H���ɂ����ł���ˁB��͂�A�O�u�L�@�̕��������ł���ˁB
(defun fact (n) (if (n <= 1) 1 (* n (fact (n - 1)))))
Lisper �͑��̃v���O���~���O����Ƃ̑����������D���ł���B
����͂ǂ�Ȍ���ɂ����Ă鎩�M�����邩��ł���B
�Ȃ�ƂȂ�ALisp �ɂ͐F�X�ȕ����A����������A�ނ�𖡕��Ɉ�������āA���̂ł���B
�����Ȃ�A�̂��炠��e��̕��� Lisp ��O���ɑ���o���A����������̂ł���B
�����ň�����łȂ������̍��킹�Z��p����̂����錍�ł���B
����ł����������ȂƂ��ɂ́A�t�]�ł��閂�@�̌��t������B
�u�ł�����́ALisp �̉e�����Ă����ł��傤�v
����̓j�N���E�X�E���B���g�̗L���Ȗ{�̑薼�ł���A�v���O���}�ł���A�N����x�͖ڂɂ������Ƃ����邾�낤�B
�E�E�E���̖{��ǂ�ł��邩�ǂ����͕ʂɂ��āB
����A���X�v�̓f�[�^�ƃv���O�����͓������X�g�ŕ\���A�f�[�^�ƃv���O�����͓����ł���ƍl����B
����� Lisper �ł���A�N�����������v���ł��낤�B
����͂܂�A�u�f�[�^�\�����v���O�����v�ƕ\���ł��邾�낤�B����Ɠ�N���E�X�̎����Ƒg�ݍ�����ƁA�ǂ��Ȃ�̂��낤��
�A���S���Y���{�f�[�^�\�����v���O���� --- (1) �f�[�^�\�����v���O���� --- (2) �A���S���Y�� = 0 --- (3) = (1)�[(2)���v�Z
���̂悤�ɃA���S���Y���� 0 �ƂȂ�A����� Lisp �ł� NIL �ł���A�����ł���B��ʂɂ͖��p�̒����ł���B
(defun O_O () '1+1=?) ; (O_O) (defun ^_^ () '2!) ; (^_^) (defun @-@ () '10!) ; (@-@) (defun ^O^ () 'full!) ; (^O^) ISLisp>(O_O) 1+1=? ISLisp>(^_^) 2! ISLisp>(@-@) 10! ISLisp>(^O^) FULL!
(���) (@-@)�N���������̂͂������2�i���ł��B(^O^)�͋��e�ʂ����̂ł��傤�B
�Ȃ� Lisp �ł͖��O�� ^ �� -, @, !�Ȃǂ̋L�������R�Ɏg���܂��B
EV-Lisp �� EVQ-Lisp
(car '(1 2 3)) v.s. car(1 2 3)
InterLisp v.s. MacLisp
�퍑����̗��Y�̐킢�B
���{�� Common Lisp �ψ���̎v���o�ȂǁB
�y�[�W���ɗ]�T������A��c���V�𒆐S�Ƃ��Ċ������Ă����d�q���i�d�q���Z�p�Y�Ƌ���̍����O�̋ƊE�c�̂̈�j
�� Common Lisp �ψ���̎v���o�����܂��B
"generic function"�̖�ꂪ�ǂ̂悤�ɂ��Č��܂����̂��Ȃǂ̂��ڂ�b�����S�ɂȂ邩���m��܂���B
Emacs, AutoCAD, Interleaf, GAT �Ȃ�
�l�H�m�\(AI)�G���W���A�G�L�X�p�[�g�V�X�e���A���������iREDUCE, Maxima�j�A��
���{�b�g�FiRobot�Ђ̃����o�A���S �}�C���h�X�g�[��(XS)
�e��
�{���ɂ��Љ�܂������A
ISLisp ��http://www.islisp.org/jp/download-jp.html����
�_�E�����[�h�ł��܂��B
�~���[�T�C�g��http://www.islisp.com/jp/download-jp.html�ɂ���܂��B
Common Lisp �ŁA���K���̗�A�����ċA�̗�Ȃǂ�lj������T���v���v���O����
(defun fib (n) (if (<= n 1) 1 (+ (fib (- n 1)) (fib (- n 2))) ))
�� if ���� then �߂� 1 �� n �ɏC��
(defun fib (n) (if (<= n 1) n (+ (fib (- n 1)) (fib (- n 2))) ))
(fib 0) �̒l�� 1 ���� 0 �ɏC�����܂����B
�{���̓ǎ҂̊F�l�A�����f�����|�����܂��āA���݂܂���ł����B
�}�N����`�̃T���v���v���O�����Ƃ��āAISLisp �� Common Lisp �݊��p�b�P�[�W���}�N����`��������
�A���A1-�A1+�Ainc�Adec�Asecond�Athird�Apop�Apush�Adotimes�Adolist�Aprint�Aprin1�Aterpri�Aread-from-string �����ł��B
�܂��ꕔ�̊��� Common Lisp �̃T�u�Z�b�g�̎d�l�ɂȂ��Ă��܂��B
�� (load �t�@�C����)�� Lisp �v���O�����t�@�C�������[�h�ł��܂��B
"samples.txt" �����[�h����Ƃ��́A(load "samples.txt")�����s���܂��B
�Ȃ� Lisp �t�@�C���̑������́A��ʓI�ɂ� "lsp" �ł��B"txt" �Ƃ��Ă���̂̓E�F�u�Ō��₷�����邽�߂ł��B
�܂��}�N����`�̃T���v��(Common Lisp �݊��p�b�P�[�W)�́A(load "cl.txt")�Ń��[�h�ł��܂��B
�T���v���v���O�����̎��s��͈ȉ��̂悤�ɂȂ�܂��B
ISLisp>(fact 50) �� 30414093201713378043612608166064768844377641568960512000000000000 ISLisp>(fib 11) �� 89 ISLisp>(append2 '(1 2 3) '(4 5 6)) �� (1 2 3 4 5 6) ISLisp>(mapcar1 (lambda (x) (* x 2)) '(1 2 3)) �� (2 4 6) ISLisp>(qsort #'< '(5 4 3 2 1)) �� (1 2 3 4 5) ISLisp>(hanoi 5) �� 31��̈ړ� ISLisp>(nqueen 9) �� 352�̉�
fact�̒l���番����܂��悤�ɁALisp �ł͈�ʓI�� bignum (����������)���T�|�[�g���Ă��܂��B
���Ȃ݂� Windows �łł� (fact 153) �܂Ōv�Z�ł��܂��B(fact ���g���X�^�b�N�Ɉˑ����܂��B)
�u�₳���� Lisp �̍��� by Java and by C#�v�̋L���� �����ɂ���܂��̂ŁA�Q�l�ɂ��Ă��������B
---------------------------------------------- ��1. mapcon �͐^���X�g�����D���H (mapcon (lambda (x) x) '(1 2 3 . 4)) ��]������ƁA���̒l�͂ǂꂩ�H �ȉ�����I�тȂ����B [a] (1 2 3 2 3 3) [b] (1 2 3 2 3 3 . 4) [c] (1 2 3 4 2 3 4 3 4) [d] (1 2 3 4 2 3 4 3 . 4) ----------------------------------------------
������[b]�B
�^���X�g�łȂ� mapcon �̐U�镑����₤���ł���B
mapcon �� nconc �ŘA������Ă��邱�ƂɁumapcon �Ƃ������O����C�Â��vnconc �̃h�b�g�Ό����̖��Ɠ����ɂȂ�B
�܂�A(nconc '(1 . 2) '(3 . 4))��(1 3 . 4)�Ɠ������ł���B
---------------------------------------------- ��2. ���k nconc �̉��O (nconc '(1 . 2) '(1 . 2))��]������ƁA(1 1 . 2) �ɂȂ�A���̒���(length (nconc '(1 . 2) '(1 . 2))) �́A2 �ɂȂ�B ����ł� (let ((x '(1 2 . 3))) (length (nconc x x)) ) ��]������ƁA���̒l�͂ǂꂩ�H �ȉ�����I�тȂ����B [a] 3 [b] 4 [c] 5 [d] Error ----------------------------------------------
������[d]�B
���̖��͐^���X�g�łȂ����X�g�ɑ��� nconc �� length �̐U�镑����
�₤�����U�����Ă��邪�A���� nconc �̔j��I�����₤���ł���B
��1���U�����邽�߂̑O�U����ł������B
nconc �ɂ���āAx �̖����͎������g�̐擪�Ɍq����A���̌��ʁA�z���X�g�ɂȂ��Ă��܂��B
Lisp Skill Exams������܂��B
�������ɂ͂��Ă��܂���BCommon Lisp �� ISLisp �̒m���ʼn�������ɂȂ��Ă��܂��B
�I���W�i���� Android �A�v�����p��ł̂݃����[�X���Ă���W�ŁA�p��łɂȂ��Ă��܂��B
���҂Ɋ�ꂽ����܂��̓R�����g�ɑ��āA�����ɉ����Ă��������܂��B
�������A��̓I�Șb�ڏ������A���ۉ������Ă��������܂��̂ŁA�����S���������B
�܂��A���ׂĂ̎���ɂ������ł��Ȃ������m��܂���̂ŁA���e�͂��������B
���^�v���O���~���O�̌����ł���Ɍv�Z�́A�`���[�����O���S�ł�����A
�\�͎͂葱���^����Ɠ����ł��B�܂茴���I�ɂ́A�ǂ�ȃv���O�����ł����^�v���O���~���O�ŋL�q�ł��܂��B
���������ۖ��͂�͂�A��Ԃ�ϋɓI�Ɏg�������������悤�Ȗ��ł́A��ԃ}�V���I�ȍ��������v���O�����̕��������Ǝv���܂��B
����p side effect �Ƃ������t����͈����C���[�W������܂����A�֗��Ȏd�|���Ȃ̂��m���ł��B
�������A�킴�킴����p���g�킸�ɍċA�Ńv���O���~���O�ł���Ƃ��͎g��Ȃ��悤�ɂ������������ł��傤�B
����p��p����ƁA���ꂪ�o�O�̉����ɂȂ邱�Ƃ����X����A���̃f�o�b�O����ςɂȂ�܂�����B
Lisp �̃V���{���ɂǂ�Ȍ^�̒l�ł��u���s���Ɂi���I�Ɂj�v�i�[�ł��܂��B
�Ⴆ�A������ 1 �ł��A���X�g��(1 2 3)�ł��A���� #'car �ł�����ł��܂��B
������u���I�^�t���v�ƌĂ�ł��܂��B
Java �Ȃǂł̓R���p�C�����Ɍ^�錾������ÓI�^�t������{�ł����A������������Ɠ��I�^�t�����ق�̈ꕔ�ł���悤�ɂȂ�܂����B
Lisp �ł͍������̂��߂ɁA�^�錾�����邱�Ƃ��ł��܂����A��{�I�ɓ��I�^�t���ł��B
���̓��I�^�t���̎������l���Ă݂܂��B
���ׂĂ���^�ɂ��āA�Ăяo�����ɉ����Č^�ϊ�����Ƃ�������������܂����A����ł͒x���ł��̂ŁA�^�ʖڂȎ������l���܂��B
���I�^�t�����������邽�߂ɂ́u�^���v���ǂ����Ɏ�������K�v������܂��B
���̌^�����f�[�^�ƕʂɎ�������ƁA�Ⴆ�A�\���̂ɂ��ĕʂɑ҂�����ƁA�g�p���郁�������傫���Ȃ�A�������鎞�Ԃ��|����A�x���Ȃ�܂��B
�������A���̎������@�͊ȒP�ł��̂ŁA������ Lisp �����n�ł͂����̗p����Ă��܂��B
�����Ɛ^�ʖڂȎ������@�ł́A�Ⴆ�A32�r�b�g�}�V���ł���A32�r�b�g�̂ǂ����ɐ��r�b�g���g�p���āA�^�����i�[������@������܂��B
���̌^�����u�^�O�v�ƌĂ�ł��܂��B�����̎�ނƂ��āA�^�O���Œ蒷�ɂ���̂��A�ϒ��ɂ���̂��A�^�O����ʂɒu���̂��A���ʂɒu���̂��Ȃǂ�����܂��B
�܂��ʂ̎������@�Ƃ��ẮA�A�h���X�ɂ���āA�^����ʂ�����@�Ȃǂ�����܂��B
���̎����ɂ���āALisp �̎��s���x���ς�邾���łȂ��AGC �̃A���S���Y���ɂ��e����^���܂��B
���ׂẴv���O���~���O�͐�ΓI�ɓ���Ƃ��A�t�ɂ��ׂẴv���O���~���O�͐�ΓI�ɊȒP�ł���Ƃ��A
�܂����^�v���O���~���O�����A���̃v���O���~���O�Ɣ�r���āA���ΓI�ɓ���Ƃ�������ł��傤�B
�����(1)�u���^�v���O���~���O�͓���̂��H����A����Ȃ��Ƃ͂Ȃ��B�ȒP���i����j�v�Ƃ����Ӗ����A
(2)�u���^�v���O���~���O�͓���̂��H�������A����B����Ȃ��Ƃ͓�����O���i����j�v�Ƃ����Ӗ����A
(3)�u���^�v���O���~���O�́A���̗Ⴆ�A�葱���^�i���ߌ^�j�v���O���~���O��I�u�W�F�N�g�w���v���O���~���O�A
�_���^�v���O���~���O�ȂǂƔ�r���āA����̂��H�i���̉��l�̑f�p�Ȏ���j�v�̈Ӗ��ő����邩�ɂ���āA
���߂͈���Ă��܂��B
�܂��e�v���O���~���O�p���_�C���ŁA�ǂꂪ��ԓ�����A�܂��͋t�ɂǂꂪ��ԊȒP�����c�_���Ă��A���܂�Ӗ����Ȃ��ł��傤�B
�����ł́u�Ȃ����^�v���O���~���O�͓���̂��H�܂��͂����v���Ă���̂��H�v���e�[�}�ɂ��Ă��܂��B
�{���Ɋ��^�v���O���~���O�̃����b�g�͉ӏ������ɂ��Ă��܂����A��ɍi��A��ڂ�(1)�v���O���������剻���Ă��钆�A
�v���O�����̐M���������コ���邱�Ƃł��B
�v���O��������K�͉����Ă�������̒��ŁA�v���O���~���O�̐��Y�����オ���߂��A�Ⴆ�A�I�u�W�F�N�g�w���v���O���~���O���g����悤�ɂȂ�܂����B
�������ÖٓI�R�[�h�i��.�X�[�p�[�N���X�ւ̃A�N�Z�X��\�b�h�K�p�����Ȃǁj�̂��߁A�o�O�����v����₷���A�f�o�b�O����Ƃ��͋t�ɐ��Y���𗎂Ƃ����ʂɂȂ�܂����B
����A���^�v���O���~���O�͕���p�����܂�g��Ȃ����߁A����ɂ��o�O�����Ȃ��Ȃ�܂��B
����ɈÖٓI�R�[�h���Ȃ��V���v���Ȍv�Z���f���ł��邽�߁A�o�O�̖��v��f�o�b�O�����ɂ����Ƃ������Ƃ�����܂���B
���Y�������M�����ł��I�E�E�E���Ԃ�B
2�Ԗڂ̊��^�v���O���~���O�̃����b�g��(2)���s�����Ɍ����Ă���Ƃ������Ƃł��B
����͑��̕��s���f���A�Ⴆ�A�A�N�^�[���f���Ɣ�r���Ă݂�ƁA�u����p�v�̑��݂��ǂ�������������Ă��܂��B
���s�v���O�����́i���Y���łȂ��j�M�����Ƃ����ʂŌ��āA����p�͎ז��ȑ��݂ł��B
�Ɍv�Z�����ɓ��삷����s���f���̕����A�N�^�[�Ȃǂ̑��̃��f�������A�V���v���ŐM�����̍������f���ł��B�E�E�E�Ǝv���Ă��܂����A�ǂ��ł��傤���H�i��C�H�j
���͐́AAI ���V�������̂Ƃ��ė��s���Ă����Ƃ��A�u�Ȃ� AI �}�V���� Lisp �Ȃ�ł����H Lisp �͉���������ł����H�v
�Ƃ���������Ⴂ�l����A���炢�l�܂ŁA�F�X�Ǝ��₳��Ă��܂����B
�����Ŋw���P�́A�^�ʖڂɓ�����Ƃ�������A�ꌾ�œ����������ǂ������o�����L��܂�(������ Lisp �� Prolog �ɕς��Ă������ł�)�B
�Ȃ��ALisp �����������āH�����A���܂��Ă��邾��B�u�������v�������炳�B--- ���݂܂���A�I�`�܂���ł����B
�{���ł����������̂��A30�������ʼnߌ��Ɍ�����ƁA
(i) �ċA�v���O���~���O����������Ƃ��Ȃ�
(ii) �������� lambda ���Ĕ����ł��Ȃ����B���ăɂ͉���H�啶���̃��́��Ɏ��Ă��邵
(iii) �O���[�o���ϐ��͍D�������A�g���܂����Ă邵�iJava �ł���t�B�[���h�ϐ��̎g���܂��肾���j
(iv) �������3�x�̔т����D�������A3�s��1�͎g���Ă邵
(v) �J��Ԃ����͂�������D���Afor �������ɑ�D��
(vi) ���������ɂ�����ĉ��H����Ԃ����āA����ȃL���C���̂���Ȃ���
(vii) �e�Ɋp�A���i�ƃv���O���~���O�̕��@���Ⴄ��
�Ƃ��A�v���Ă���̂����m��܂���B������A���^�v���O���~���O�́u�H�킸�����v�œ���Ǝv���Ă���̂ł��傤�B
���̂悤�ȑ����̃v���O���~���O�����E�ł����A�L���N�E�c�N�V�C���^�v���O���~���O�̐��E�͎����ɂ͓���Ǝv���Ă���̂ł��傤�B�i�R�ł��A��k�ł����Ăj
�ł����ۂ͓������܂���̂ŁA���S���Ă��������B�C�s����K�v����E����K�v������܂���B�݉Ƃ̂܂܂ł����̂ł��B
���i�h�Ȃǖ��Ȃǂ���܂���B�����_���y�ł��B�ċA�ȂǍŋ߂Ȃ�ȒP�ɂł��܂��B
�������A�d�v�ȃA�h�o�C�X��������1��������܂��B
�܂��� Lisp ����n�߂Ă��������B����~���܂��B
��������������܂��ƁAPerl��Python�ACurl �Ȃǂ̌y�ʋ�����(Lightwight Language, LL)�Ɗ��^�v���O���~���O����������ɂ���Ă���悤�ł��B
���^����� LL �͏d�Ȃ镔��������܂����A���^�v���O���~���O�́iLL������ᔻ�I�Ɏg����j�d�ʋ�����ł��A�\�ł��B
�܂�ALL �Ɗ��^�v���O���~���O�͒�������W�ł��B���̂��߁A�uLL ����K�͊J���Ɍ����Ă��Ȃ��v�Ƃ���ᔻ�́A����̌��ł͐����������m��܂��A
���^�v���O���~���O�Ƃ͒��ڊW����܂���B
����A��K�͊J���ɂ�����I�u�W�F�N�g�w���̗D�ʐ��������āA���^�v���O���~���O����K�͌����łȂ��Ƃ���ᔻ������܂��B
�m���ɃN���X�x�[�X�̃I�u�W�F�N�g�w���ł́A��K�͊J���ɑ����̉����Ƃ��āA�u�N���X�ɂ�镪���v�u�J�v�Z���v�u�����v���O���~���O�v�Ȃǂ������Ă��܂��B����͊��^�ɂ͂Ȃ����̂ł��B�F�߂邵���Ȃ��ł��傤�B
�������A���l�Ɋ��^�v���O���~���O�́A�K�͂ƕi���̊W�ɂ����āA����������@����Ă���̂��m���ł��B
���^�v���O���~���O�͋K�͐��Y���ł͂Ȃ��A�K�͐M�����ɂ����āA���͂�����ł��傤�B
(*) �y�[�W���͕ҏW������̗v���łȂ��A���҂��ǐS�̙�ӁH�I�ɑς����˂āA����K���������ʂł��B
�t�ɓ����\������呝�y�[�W���Ă��������A���ӂ��Ă���܂��B����ł�������Ȃ������̂������ł��B
visitors from 2015/7/26
visitors on today
Lisp �̒��� Android �̒��� �����̒��� �S���̒��� �r�[���R���N�V����
Copyright © 2015 GOMI Hiroshi All Rights Reserved