Nasıl Lisp's-eval-baskı döngü okumak Python daha farklı'ler mi?
statement by Richard Stallman aşağıdaki bir karşılaşma.
Lisp sistemi ne zaman başladın, okuma-eval-baskı döngü girer. Çoğu diğer dillerde hiçbir şey okumak, hiçbir şey eval, ve hiçbir şey yazdırmak için karşılaştırılabilir karşılaştırılabilir karşılaştırılabilir. Ne şaşkın eksiklikleri! '
Şimdi, Lisp çok az programlama yaptım, ama Python Kodu ve Ayrık biraz son zamanlarda önemli miktarda yazıp bitirdim. Benim izlenimim bu dilde de okuma-eval-baskı döngü teklif edildi, ama aynı fikirde değil (en azından Python) Stallman:
'İnsanlar Lisp için temelde benzer olduğunu söyledi sonra Python belgelerine göz gezdirdim. Benim sonuç bu kadar değildir. Lisp başlattığınızda, değil mi '',', 'print' Python eksik.' tüm eval 'okumak
Gerçekten Lisp ve Python okuma-eval-baskı döngü arasındaki temel teknik bir fark var mı? Lisp ÇOĞALTMA kolaylaştırır ve bunu Python ile yapmak zor şeylere örnekler verebilir misiniz?
CEVAP
Stallman konumunu desteklemek için, Python aşağıdaki alanlarda tipik Lisp sistemleri ile aynı şey değildir:
Lisp
read
işlev ya da veri veya kod olarak değerlendirilmesi olarak kabul edilebilir bir rasgele bir veri yapısını temsil eden bir S-ifadesi, okur. Python en yakın şey eğer bir şey söylemek istiyorsan kendini ayrıştırmak zorunda olan tek bir dize okur.Lisp
eval
Bu işlev, herhangi bir Lisp kod çalıştırmak için kullanılabilir. Pythoneval
işlevi değerlendirirsadeceifadeler veexec
ifadeleri çalıştırmak için açıklama ihtiyacı var. Ama bu iki Python kaynak kodu metin olarak temsil ve çemberler bir sürü üzerinden atlamak zorunda "eval" bir Python AST.Lisp
print
işleviread
kabul eden aynı şekli ile bir S-ifadesi yazar. Pythonprint
bir şey kesinlikle her zaman geri dönüşümü olmayan baskı yapmaya çalıştığını verileri ile tanımlanan yazdırır.
Stallman açıklaması biraz samimiyetsiz, açıkça Python olmasıdıryokfonksiyonları tam olarak adlandırılmış eval
print
, ama farklı bir şey (ve) alt beklediğini ne için yapıyorlar.
Bence Pythonyokbazı yönleri Lisp vardır, tıpkı insanlar Python içine Stallman bak tavsiye olabilir anlayabiliyorum. Paul Graham argues in What Made Lisp Different, Lisp tüm özelliklerini içeren herhangi bir programlama dili gerektiği gibi ancak, aynı zamandaolabilirLisp.
Nasıl Python stderr için baskı?...
Nasıl baskı yeni satır veya boşluk olm...
Nasıl Python baskı çıktı temizlemesini...
Nasıl değişmez bir " baskı miyim;{}&qu...
Python: sınıf baskı kullanarak bir sın...