2015-01-07 12 views
5

BizResmi olarak bir argümanda bir fonksiyonun katı olmadığını nasıl söyleyebiliriz?

f ⊥ = ⊥ 

ama nasıl bir işlevi, bağımsız değişkeni olmayan katı olduğunu söylemek yoksa bir işlevi, bağımsız değişkeni içinde sıkı olduğunu söylemek?

Bir işlevin katı olmadığını söyleyebilir miyiz?

Bu, başka bir argümanın değerine bağlı olarak bir argümanı değerlendirebileceğimiz veya değerlendiremeyeceğimiz birçok argümanın işlevlerine nasıl yayılır?

Bunu, Haddock belgelerini kullanarak Haskell işlevlerinin katı özelliklerini daha iyi belgelemek bağlamında rica ediyorum.

+3

Doğru değilsiniz, eğer f ⊥ ≠ ⊥ ise bir işlev katı değildir. 'a bağlı olarak bir argümanı değerlendiremezseniz, işlev katı değildir (değerlendirilmeyebilecek olan argümanda). – BadZen

+2

Bir işlev * her zaman * argümanını değerlendirirse, bu argümana sıkı denir. Bir argümanı * asla * değerlendirmeyen bir işleve, bu argümana ilgisiz denir. Tamam, tamam, daha yeni yaptım. Fakat bu önemsiz davranışı çalışmak çok heyecan verici bir bilim değildir. Her zaman * argümanını değerlendirmeyen bir işlev, bu argümanda katı olmayan olarak adlandırılır. –

+2

@ n.m. Bir işlev argümanını tamamen görmezden gelebilir ve hala bu argümanda katı olabilir. – augustss

cevap

12

Karmaşıklık özelliklerini ifade etmek için standart bir işaret yok. Ayrıca, veri yapıları için tam olarak ne kadar değerlendirildiğini söylemeniz gerekebileceğinden, sadece sıkı olmak kadar basit değildir. Eğer ilk argüman değerlendirecek, yani ikinci ya da üçüncü ya katılık 1 & (2 | 3) olduğunu söyleyerek tahmin edebilirsiniz

cond c t e = if c then t else e 

gibi basit bir işlev için, söz konusu

. Bunlar basit bir katılık analizörünün ortaya çıkaracağı bir çeşit sertlik özellikleridir. (Ve basit olanları, değerinde olan tek kişi gibi gözüküyor.)

İlgili konular