2013-03-26 20 views
7

Ben dili öğrenmeye başlayan bir Common Lisp newbie'yim. Sorum şu: Ben farklı işlevler yüklemi sözdizimini farklı şekillerde kullandım. Mesela (sadece yukarı baktım), streamp ve pathnamep var, ama aynı zamanda input-stream-p ve output-stream-p var. Neden tüm fonksiyonlar * p veya * -p? Kullanmak için standartlaştırılmamıştır? Bu belki sadece tarihi bir eser mi?Neden adlandırma kuralı farklı işlevler arasında farklılık gösteriyor?

+1

Çoğunlukla tarihsel - Common Lisp, büyük ölçüde, o zamanki tüm Lisp uygulamalarının basit bir birleşimi olarak sona erdi, hemen hemen hepsi, mevcut kodun çalışmaya devam etmesini sağlamaktan çok daha fazla ilgi ile birlikte atıldı. gerçekten iyi uyum sağladım. –

+1

Bu aslında 'sözdizimi' değil - 'adlandırma kuralı' – GoZoner

+1

@GoZoner İyi nokta, düzeltildi. –

cevap

11

kural çok kelimeli yüklem isimler -P sona ederken tek kelimelik yüklem isimler, sadece P sona olmasıdır. Birincinin sebebi çoğunlukla tarihseldir; İkincisinin nedeni, input-streamp gibi bir ismin yanlış sorulması, sorulan sorunun “bu bir akım mıdır?” veya bunun gibi bir şey olduğunu ileri sürmesidir.

+1

Ben bir kural olarak 'predicatep' ve' kompleks-predicate-p' (veya alternatif olarak 'simplep' ve' kompleks-predicate-p') demeye eğilimliyim. – Vatine

+0

Ayrıca, bazı durumlarda, çok sözcüklü yüklem için bir tire eklemeyeceğinizi de unutmayın (örneğin, "string-lessp"). Bkz. [Common Lisp the Language, 2nd Edition] (http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node69.html). – coredump

+0

Ve ayrıca "atom" :) var. [Common Lisp the Language, 2nd Edition] (http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node73.html) –

İlgili konular