2015-08-18 16 views
9

20 intermediate Haskell exercises yapıyorum.haskell'de ((->) t) nedir?

ilk 2 egzersizi bitirdikten sonra bu garip bir şey yoktur. Ben ((->) t) nedir öğrenmek istiyorum

?

-- Exercise 3 
-- Relative Difficulty: 5 
instance Fluffy ((->) t) where 
    furry = error "todo" 

Teşekkürler! :-)

+3

ile herhangi bir işlev için İsterseniz, sadece bu durumda operatör bölümleri sözdizimsel yasadışı olduğu durumlar dışında 'Fluffy (t ->) örneği' olarak düşünebilirsiniz. –

cevap

4

(->), * -> * -> * türünde işlevler için tür yapıcıdır, bu nedenle iki tür parametresi gerektirir - işlevin giriş ve sonuç türü. ((->) t bu kurucu kısmi bir uygulama bu nedenle t yani bir bağımsız değişken tür fonksiyonları olduğu (t -> a) bir tür a için. Eğer furry fonksiyonun türüne içine yerine ise

Alacağınız:

furry :: (a -> b) -> (t -> a) -> (t -> b) 
0

Sen Infix t -> a olarak önek (->) t a okumalısınız.

o zaman Maybe a türü (ve * -> * tür),

instance Fluffy ((->) t) where 

(->) t a == t -> a türü (ve * -> * tür) içindir için

instance Fluffy Maybe where 

varsa - 1 argüman