> (eq? 1 1)
#t
> (eq? 1.1 1.1)
#f
> (= 1.1 1.1)
#t
Bu, DrScheme'deki etkileşim penceresidir. Birisi lütfen = ve eq arasındaki farkı açıklayabilir mi? Şemada?Eşitlik arasındaki fark? ve = Şemada?
> (eq? 1 1)
#t
> (eq? 1.1 1.1)
#f
> (= 1.1 1.1)
#t
Bu, DrScheme'deki etkileşim penceresidir. Birisi lütfen = ve eq arasındaki farkı açıklayabilir mi? Şemada?Eşitlik arasındaki fark? ve = Şemada?
= numaralarını karşılaştırır. eq? Parametrelerin bellekte aynı veri nesnesini temsil edip etmediğini sınar. EQV? İkinci durumda eq olarak aynı şekilde test ettiği için çalışmalıdır. ama özellikle ilkelleri test eder. More on equlivence predicates in scheme here.
İlk fark: eq?
, herhangi bir değer çifti ile çalışır, =
ise herhangi bir sayı ile çalışır. Diğer bir çok equivalence predicates vardır. Çoğu sadece iki parametreyi kabul eder. =
, 'numbers' chapter
Bunu
beri eq tahmin ediyorum? parametresinin bellekte aynı veriyi temsil etmediği sürece #f değerini değerlendirir; ;
ve
Şema depolar tam olmayan sayılar tam sayılar farklı (1,1) (1) iki 1.1 argümanlar bellekte aynı yerde ikamet ve # döndürmez
eq için f?
eq? numaraları önceden tahmin edilemez. Sayısal değişmezlerin birbirine bağlı olup olmadığı değil, aynı sayıların bellekte aynı konumda olması, uygulamaya bağlıdır. Örneğin, Raket dili, son zamanlarda okuma sırasında bu tür edebi türlerin internette çalışmasını seçmiştir. http://www.mail-archive.com/[email protected]/msg04893.html
Dil uygulamanızın çalışma zamanının her bir numarayı benzersiz olarak temsil edip etmeyeceğini bilmeyeceksiniz. Bu, yüzen ve bignum gibi kutulu değerleri etkileyebilir. Bu nedenle, =, sayılar için bir yüklem olarak mevcuttur: sığ işaretçi eşitliği yerine içeriğin eşitliğini kontrol eder.
Bu Scheme gibi dillere münhasır değildir: equalness vs eşitlik Python oluşur (örneğin vs == olduğunu).
daha ilginç bir soru, "eq", "eşittir?" Ve "eqv?" Arasındaki farktır. – newacct