LoginSignup
13
2

More than 3 years have passed since last update.

PythonはLISPである

Last updated at Posted at 2019-06-05

※ ネタです

LISPといえば?

LISPといえばマクロ?eval?ラムダ計算?S式?

私LISP素人から見てLISPといえば()をたくさん書く言語だと思います。

Pythonも()がたくさん書ける言語

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>

この特性を利用することで()をたくさん含んだ難読なプログラムを書くことができます。

python
>>> ((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]

改行してあげると多少読みやすくなります(読みにくい)

main.py
((add)) = (((lambda x, y : ((x)) + (((y))))))
((((print)
    ((((list)
        ((((range)))
            (((int)
                ((((add)))
                    ((str)(((int))((((True))))), (((str)))((((((int)))))(False)))))))))))))

つまり...

python
>>> Python = '()がたくさん書ける'
>>> LISP = '()がたくさん書ける'
>>> Python == LISP
True
13
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
2