[Haskell-cafe] Curry and uncurry
westondan at imageworks.com
Thu Oct 4 22:36:43 EDT 2007
Here is one trick I have found useful on occasion:
Prelude> :t let f = undefined :: (Num a) => (a,a) -> a in curry f
let f = undefined :: (Num a) => (a,a) -> a in
curry f :: (Num a) => a -> a -> a
undefined (also called bottom) is an element of every type, so if you
just need "something" with a given type, you can write
undefined :: YOUR_TYPE_HERE
If you're having typing troubles in a complex expression, stick in
annotated (i.e. the suffix :: SOME_TYPE) unknowns as placeholders, then
replace them until the type breaks. Use parentheses (undefined :: TYPE)
to be sure, since the binding strength of :: is not high.
PR Stanley wrote:
> No, still no idea!
> I tried curry f
> where f :: (Num a) => (a, a) -> a
> and it didn't like it.
> For some reason I'm finding this a little chalenging.
> Thanks, Paul
> At 17:03 03/10/2007, you wrote:
>> On 10/3/07, PR Stanley
>> <<mailto:prstanley at ntlworld.com>prstanley at ntlworld.com> wrote:
>> I didn't even know about the curry and uncurry functions. I'm not
>> looking for the answer but some guidance would be much appreciated.
>> Thanks, Paul
>> You can look at the types without seeing the implementation, too. Just
>> start up GHCI and type:
>> :t curry
>> :t uncurry
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
More information about the Haskell-Cafe