[Haskell-beginners] Trying to understand function types eg iterate (a -> a)

divyanshu ranjan idivyanshu.ranjan at gmail.com
Tue Dec 31 14:55:13 UTC 2013


Hi Angus,

   Your understanding is correct. Parenthesis is need in a -> a to specify
that it is function from a to a because associativity of -> is from right
to left. (*2) is section, you can read more
   about here :
http://www.haskell.org/haskellwiki/Section_of_an_infix_operator.

   Type of (*2) is (Num a) :: a -> a rather than particular type Int.


Thanks
Divyanshu Ranjan





On Tue, Dec 31, 2013 at 8:16 PM, Angus Comber <anguscomber at gmail.com> wrote:

> iterate' :: (a -> a) -> a -> [a]
>
> I am trying going to go ahead and write my own iterate function.  But
> before I do I want to be clear on types.
>
> Looking at  :: (a -> a) -> a -> [a]
>
> The first part is (a -> a)  Now because it is in parentheses it is a
> function?
>
> I can call iterate like this:
> take 5 $ iterate (*2) 5
>
> So (*2) is a possible function.  Does the brackets mean it is a function,
> the left hand a is indicating a general type and the right hand a means the
> return type must be the same as the function type.  Eg in the case of (*2)
> the 2 is an Int so the function returns and Int?  Is my understanding
> correct?
>
> How could this be better explained?
>
> The last bit is easier to understand.  a -> [a] meaning a singleton of
> general type and [a] means a list of same type.
>
>
>
>
>
>
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20131231/9807d666/attachment.html>


More information about the Beginners mailing list