[Haskell-cafe] Printing the function result

Stefan O'Rear stefanor at cox.net
Wed Jul 25 14:39:37 EDT 2007


On Wed, Jul 25, 2007 at 11:27:59AM -0700, Alexteslin wrote:
> 
> Hi,
> 
> I am going through examples from the textbook and trying them out but some
> don't work.
> For example:
> 
> addNum :: Int -> (Int -> Int)
> addNum n = addN
> 	where
> 	addN m = n+m
> 
> This error message i am getting:
> 
> ERROR - Cannot find "show" function for:
> *** Expression : addNum 4
> *** Of type    : Int -> Int 
> 
> Now, the type of show is a->String, but i need some kind of function to
> print the function as a result.
> I tried some input output functions but i don't think that is the right way
> to follow.
> 
> Can anyone suggest me where to look?

You can't print function values because there is no reasonable way to do
it; printing the definition would break useful equations like 2 + 2 = 4
(since show (\_ -> 2 + 2) == "\_ -> 2 + 2" /= "\_ -> 4" == show (\_ ->
4); printing the table of values would take forever for a big type like
Int (at least a billion constructors, many more on some systems), etc.

You can print applications of functions, however;

(addNum 4)  10  ==> 14
(addNum 4)  20  ==> 24

etc.

Stefan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
Url : http://www.haskell.org/pipermail/haskell-cafe/attachments/20070725/5b7477ec/attachment.bin


More information about the Haskell-Cafe mailing list