Elogent cevabı mükemmel. Listelerin fonksiyon olması mantıklı olmayacak bir neden daha vardır:
Literal listeler zaten farklı, çok önemli bir role sahiptir, bu yüzden bunlar, vektörlerin olduğu şekilde fonksiyon olarak ele alınamazlar.
İki işlev içeren bir vektörle başlayalım: partial
ve +
ve bir sayı, 5
. Bildiğiniz gibi onun argüman tarafından dizine değeri döndürmek için, bir fonksiyon olarak vektör tedavi edebiliriz, o kadar iyi
user=> ([partial + 5] 2)
5
Şimdiye kadar. 5
değerini döndürmek için, önerdiğiniz gibi vektör yerine (partial + 5)
numaralı bir listeyi kullanmak istediğimizi varsayalım. Bir hata mesajı alır mıyız? Yok hayır!
user=> ((partial + 5) 2)
7
ne oldu: Ama biz, ya sonucunda 5
almazsınız? (partial + 5)
bir işlevi döndürdü - tek bağımsız değişkenine 5 ekleyen işlev - ve bu işlev 2
argümanına uygulandı.
Bir liste değerlendirildiğinde, ilk öğesi değerlendirilir ve bir işlev döndürmelidir. İlk öğe bir sembolse, değerlendirilir ve sonra değerinin, listenin diğer öğeleri olan argümanlara uygulandığı işlevdir. Bir listenin ilk argümanı bir listenin kendisi ise, o zaman en üst seviyede olsaydı değerlendirilmesiyle aynı şekilde değerlendirilir. Bu iç listedeki tüm ifade, bir dış fonksiyonun diğer öğelerine uygulanacak bir işlev döndürmelidir.
Değerlendirilmekte olan listenin ilk öğesi olan bir iç liste zaten bu role sahip olduğundan, ilk öğeleri olan vektörlerin oynadığı rol türünü de oynayamaz.
Liste ve sıra arasında fark var mı? –
Yığın akışına hoş geldiniz, başkalarının zihninin durumuyla ilgili soruları "doğru" veya "yanlış" olarak işaretleyebilmenizi sağlayacak şekilde yanıtlamak zordur, bu nedenle nesnel olarak bu soruyu yanıtlamak zordur. –
@BobJarvis dizisi, liste dahil olmak üzere tüm koleksiyon türleri tarafından uygulanan bir arabirimdir. –