[Haskell-cafe] Haskell purity and printing
Philip Weaver
philip.weaver at gmail.com
Tue Dec 18 16:08:26 EST 2007
On Dec 18, 2007 1:00 PM, Cristian Baboi <cristian.baboi at gmail.com> wrote:
>
> This is what I "understand" so far ...
>
> Suppose we have these two values:
> a) \x->x + x
> b) \x->2 * x
> Because these to values are equal, all functions definable in Haskell must
> preserve this.
> This is why I am not allowed to define a function like
>
> h :: (a->b) -> (a->b)
> h x = x
>
Of course you can define h. This is just a more specific (as far as types
go) version of 'id', as defined in the Prelude:
id :: a -> a
id x = x
where 'a' can be any type, including a function such as (a -> b). You can
apply 'id' to either of your functions above, and get back an equivalent
function, so each of the following evaluates to 20:
let f = id (\x -> x+x) in f 10
let f = id (\x -> 2 * x) in f 10
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20071218/e65551b0/attachment.htm
More information about the Haskell-Cafe
mailing list