Bazı Şablon Haskell'i öğrenmeye çalışıyorum. Bir egzersiz olarak, isLeft
ve isRight
(this question'dan esinlenerek) gibi şeyler üretebilen bir işlev yazdım.
isA connam = do
ConE nam <- connam
nn <- newName "p"
lamE [varP nn] $ caseE (varE nn) [
match (conP nam [wildP]) (normalB [| True |]) [],
match wildP (normalB [| False |]) []
]
sorun yerine isA Left
daha sezgisel bir $(isA [| Left |])
yazmak zorunda olmasıdır: Burada benim mütevazı bir girişim. Çirkin sözdizimden kurtulmak mümkün mü? Cevabı belgelerde bulamıyorum.
Bu işlev yalnızca bir argüman kurucularında çalışır, ancak bu another question içindir.
Teşekkürler. Bununla kesinlikle yaşayabilirim. Bir yerde okuduğumu hatırlıyorum, '$ 'artık eklemeler için gerekli değil, ama hangi bağlamda olduğundan emin değilim ya da burada geçerli olup olamayacağından emin değilim. –
@ n.m. Bunu bir an önce cevapıma ekledim :) Sanırım yorumunuzu yazarken orijinal yanıtımı hala görüntülüyorsunuz. – hammar
aha, bu yüzden eğer 'IS' gerçek işlev yerine 'isALeft 'adlı bir işlevin bildirimini oluşturmak için' Sol 'istiyorsa $' ı atlayabilirim, değil mi? –