Aynı kafa yapıcısı kullanılarak iki değerin oluşturulduğunu kontrol eden bir işlev yazabilmek istiyorum. Bu fonksiyon:İki değerde aynı kafa yapıcısına sahip olduğunu kontrol etme
veri türü bildiriminin büyüklüğü doğrusal olmamalıdır
veri türü
data E = A Int | B String | C
sameCons :: E -> E -> Bool
sameCons t u = case (t, u) of
(A{}, A{}) -> True
(B{}, B{}) -> True
(C{}, C{}) -> True
_ -> False
tam olarak yapmak için Obj
modülünden güvensiz işlevlerini kullanmayı. Haskell'de benzer bir şey yapabilir miyiz (ghc'ye özel bir çözüm de var)?
Türünüzü bir "Veri" örneği yapabilir misiniz? –
Örneğinizin "doğrusal" olduğunu söylediğinizde derleyici uygulamasının işlemsel yönleri hakkında bir varsayım yapıyorsunuz. Örneğin GHC, iç içe geçmiş vakalara tuple'daki durumu genişletir, bu da bir sıçrama tablosuna veya ikili aramaya derlenecektir – jberryman
GHC hakkında herhangi bir varsayım yapmadan, yazılması gereken kod satırlarının sayısı lineerdir. – amalloy