[email protected]
[Top] [All Lists]

Re: [Haskell-cafe] General Advice Needed ..

Subject: Re: [Haskell-cafe] General Advice Needed ..
From: Gregory Crosswhite
Date: Thu, 14 Jan 2010 09:44:58 -0800
Yes.  An approach that I have always used that has worked well for me is to 
keep a list of "tricks" while I am studying.  Whenever I get stuck on a 
practice problem but eventually figure it out (either by simply thinking 
harder, looking it up, or asking someone for help), I try to identify the 
missing link that had prevented me from seeing how to do it immediately, and 
then write it down on my "tricks" list so that I know that I need to keep that 
trick in mind while I am taking the test.

Cheers,
Greg


On Jan 14, 2010, at 8:53 AM, Ian675 wrote:

> 
> thankyou.. that made more sense to me :)
> 
> What im doing now is.. 
> Im still working through the "Craft of Functional Programming" book but I've
> found a site that has solutions to some of the excercise questions. So i'm
> noting them down and trying to make sense of them
> 
> Is that a good approach?
> 
> 
> Henk-Jan van Tuyl wrote:
>> 
>> On Thu, 14 Jan 2010 15:38:26 +0100, Ian675 <[email protected]>  
>> wrote:
>> 
>>> 
>>> Pretty much yeah.. Im going through the book and things like :
>>> 
>>> Define a function rangeProduct which when given natural numbers m and n,
>>> returns the product m*(m+1)*....*(n-1)*n
>>> 
>>> I got the solution from my lecture notes but I still dont understand it..
>>> 
>>> rangeProduct :: Int -> Int -> Int
>>> rangeProduct m n
>>>                  | m > n = 0
>>>                  | m == n = m
>>>                  | otherwise = m * rangeProduct (m+1) n
>>> 
>> 
>> I'll try to give a clear explanation of this function:
>> 
>>> rangeProduct :: Int -> Int -> Int
>>> rangeProduct m n
>> A function is defined with parameters m and n, both Int; the result of the  
>> function is also an Int
>> 
>>>                  | m > n = 0
>> If m > n, the result is 0; the rest of the function definition will be  
>> skipped
>> 
>>>                  | m == n = m
>> If m is not larger then n, evalution continues here; if m == n, the result  
>> of the function is m
>> 
>> 
>>>                  | otherwise = m * rangeProduct (m+1) n
>> If previous predicates were False, this branch is evaluated ("otherwise"  
>> is always True); the function calls itself with (m+1) as first parameter
>> 
>> The boolean expressions in this function are called "guards"; the right  
>> hand side after the first guard that evaluates to True, will give the  
>> result of the function.
>> 
>> Regards,
>> Henk-Jan van Tuyl
>> 
>> 
>> --
>> http://Van.Tuyl.eu/
>> http://members.chello.nl/hjgtuyl/tourdemonad.html
>> --
>> _______________________________________________
>> Haskell-Cafe mailing list
>> [email protected]
>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>> 
>> 
> 
> -- 
> View this message in context: 
> http://old.nabble.com/General-Advice-Needed-..-tp27161410p27164433.html
> Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com.
> 
> _______________________________________________
> Haskell-Cafe mailing list
> [email protected]
> http://www.haskell.org/mailman/listinfo/haskell-cafe

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

<Prev in Thread] Current Thread [Next in Thread>