Hi, Ryan and all, Bingo! I guess my question was all right after all.
I tried creating an instance earlier but *Main> :t (->) Int Char <interactive>:1:1: parse error on input `->' What got loaded with FmapFunc? I Hoogled it and got back nothing. Michael --- On Tue, 8/31/10, Ryan Ingram <ryani.s...@gmail.com> wrote: From: Ryan Ingram <ryani.s...@gmail.com> Subject: Re: [Haskell-cafe] On to applicative To: "michael rice" <nowg...@yahoo.com> Cc: "Vo Minh Thu" <not...@gmail.com>, haskell-cafe@haskell.org Date: Tuesday, August 31, 2010, 2:36 PM Prelude FmapFunc> let s = show :: ((->) Int) String Prelude FmapFunc> :t s s :: Int -> String Prelude FmapFunc> let v = fmap ("hello " ++) s Prelude FmapFunc> :t v v :: Int -> String Prelude FmapFunc> v 1 "hello 1" -- ryan On Tue, Aug 31, 2010 at 11:28 AM, michael rice <nowg...@yahoo.com> wrote: I'm not sure if my terminology is correct or even if my question makes sense, but I can create "instances" of Maybe, List, IO, and Either. Prelude Data.Either> let m = Just 7 Prelude Data.Either> :t m m :: Maybe Integer Prelude Data.Either> let l = 2:[] Prelude Data.Either> :t l l :: [Integer] Prelude Data.Either> let g = getLine Prelude Data.Either> :t g g :: IO String Prelude Data.Either> let e = Right "abc" Prelude Data.Either> :t e e :: Either a [Char] All these instances are functors, each with its own version of fmap that can be applied to it. How can I similarly create an instance of (->) so I can apply (->)'s version of fmap instance Functor ((->) r) where fmap f g = (\x -> f (g x)) to it? Michael --- On Tue, 8/31/10, Vo Minh Thu <not...@gmail.com> wrote: From: Vo Minh Thu <not...@gmail.com> Subject: Re: [Haskell-cafe] On to applicative To: "michael rice" <nowg...@yahoo.com> Cc: haskell-cafe@haskell.org Date: Tuesday, August 31, 2010, 1:50 PM 2010/8/31 michael rice <nowg...@yahoo.com> > > So it's a type constructor, not a type? Could you please provide a simple > example of its usage? Sure, although I'm sure you've come by some already. -- the identity function id :: a -> a -- often, we write it like this: -- id x = x -- but here we see the relationship between the ananymous function syntax and the function type: id = \x -> x In fact, if you write in prefix form, it is quite familiar: f :: (->) Int Bool e = Either String Float Cheers, Thu > Michael > > --- On Tue, 8/31/10, Vo Minh Thu <not...@gmail.com> wrote: > > From: Vo Minh Thu <not...@gmail.com> > Subject: Re: [Haskell-cafe] On to applicative > To: "michael rice" <nowg...@yahoo.com> > Cc: haskell-cafe@haskell.org > Date: Tuesday, August 31, 2010, 1:17 PM > > 2010/8/31 michael rice <nowg...@yahoo.com> > > > > "Learn You a Haskell ..." says that (->) is a type just like Either. Where > > can I find its type definition? > > You can't define it *in* Haskell as user code. It is a built-in infix > type constructor (Either or Maybe are type constructors too, not just > types). In fact, if you want to implement a simple, typed functional > language, you'll find it is the only built-in type constructor you > have to implement (as the implementor of the language). > > Also, > Show a => a > is a type too, but you won't find a definition for 'a' or for '=>'. > All those things are defined by the language. > > Cheers, > Thu > _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe