nowgate: > Thanks! I figured I was close. > > Didn't even know const was available. > > I put together a compliment functions earlier > > complement :: (a -> Bool) -> a -> Bool > complement p x = not (p x) > > By the signature, the first argument is a function > (predicate) which when given a value returns a Bool? > And the second argument is just a value? And the > function returns a Bool? > > > map (complement odd) [1,2,3,4,5,6] > [False,True,False,True,False,True] > > > > By similar reasoning the always function would seem to > have a signature > > a -> (b -> a) > > where the first argument is just a value and the > return value is a function that when given a possibly > different value just returns the value originally > given to always?
Yep. Which may be written as: const :: a -> b -> a > Is that reasoning OK? Are > > a -> (b -> a) and a -> b -> a the same signature? Yep. > > So the inferred type is usually pretty accurate? These Yes :-) > I'm using Hugs/Win XP just to scope out the language > right now. I tried what you suggested and got > > Hugs> let always x _ = x > ERROR - Syntax error in expression (unexpected end of > input) > Hugs> let-bindings aren't supported in Hugs at the prompt, the solution is to load the source from a file, with :reload, as you change it. You can define them in GHC/GHCi however. Also, you can use them locally as: let always x _ = x in always 1 "foo" -- Don _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe