2011-11-06 13 views
5

Bir dosyada normal prelude (++) operatörünü kullanmam gerekiyor ve ayrıca (++) için kendi davranışlarımı uygulamak istiyorum. Dosyamın üst kısmında import Prelude hiding (++) kullandım, kendi (++) operatörümü tanımladı ve şimdi daha da aşağıda normal baskıya (++) başvurmak istiyorum. Bunu nasıl başarabilirim?Haskell Prelude saklanıyor, UNDO?

cevap

14

Yaz ilaveten

import qualified Prelude 

import Prelude hiding ((++)) 
kodunun başında

ve Prelude ++ gereken yere Prelude.++ yazma

için.

4

Tsuyoshi Ito'nun açıkladığı gibi, operatörün adını modül adına göre nitelendirebilirsiniz. Ancak, kendi sürümünüzü (++) tanımlayarak programınızın okunabilirliğini arttırmak isteyebilirsiniz, çünkü daha sonra modül adıyla bir operatörün nitelendirilmesi garip bir ölçü gibi görünmektedir.

Sadece şuna bakın: "abc" Prelude.++ "def" Şimdi çirkin var söyledi.

Neden sadece <++> gibi bir yeni işleç oluşturma veya `append 'gibi bir infix işlevi oluşturma?

+3

Evet, aslında bu soruya ilk tepkime “Yazmadım” (++) ',” diye yazdım. Fakat eğer kişi kendi kütüphanesinde “++” yerine, “Prelüd” de “++” yerine bir kütüphane yazıyorsa, kütüphanenin kullanıcısı ideal olarak “Prelude. ++” 'yı kullanmak zorunda kalmayacaktır. Böyle bir (nadir) durumda, aynı ada sahip bir işlevi tanımlamak mantıklıdır. Aksi halde, o kadar yaygın olan bir isimle bir isim çatışmasına neden olmak pek mantıklı değil. –

+1

İnsanlar soruyu okuduklarında ve “bunu yapma” yla cevap verdiğinde, özellikle de soru kendi motivasyonu hakkında yeterli bilgi vermediğinde beni rahatsız etmeye başlıyor. Kaşiflerin keşfetmesine izin verin, neyin doğru olduğunu düşündükleri bir şeye izin verin, ilk elden ne kadar çirkin geldiklerini görmelerine izin verin. Yakında bu yorumu kendi * cevaplarına * yazmam için bir konumda olacaklar. :-) – luqui