PythonはLISPである
※ ネタです
LISPといえば?
LISPといえばマクロ?eval?ラムダ計算?S式?
私LISP素人から見てLISPといえば()
をたくさん書く言語だと思います。
Pythonも()
がたくさん書ける言語
Pythonにおける()
はカンマが含まれる場合はタプルと認識されますが、含まれない場合は無視されます。
よって以下のようなことが可能です。
>>> (1,)
(1,)
>>> 1,
(1,)
>>> 1
1
>>> (1)
1
>>> ((1))
1
>>> (((1)))
1
>>> print
<built-in function print>
>>> (print)
<built-in function print>
>>> ((print))
<built-in function print>
>>> (((print)))
<built-in function print>
この特性を利用することで()
をたくさん含んだ難読なプログラムを書くことができます。
>>> ((add)) = (((lambda x, y : ((x)) + (((y))))))
>>> ((((print)((((list)((((range)))(((int)((((add)))((str)(((int))((((True))))), (((str)))((((((int)))))(False)))))))))))))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
改行してあげると多少読みやすくなります(読みにくい)
((add)) = (((lambda x, y : ((x)) + (((y))))))
((((print)
((((list)
((((range)))
(((int)
((((add)))
((str)(((int))((((True))))), (((str)))((((((int)))))(False)))))))))))))
つまり...
>>> Python = '()がたくさん書ける'
>>> LISP = '()がたくさん書ける'
>>> Python == LISP
True
Thanks for reading!