Problem with defining functions and guarded rules

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Problem with defining functions and guarded rules

This is still my display name

Hi, I just started learning Haskell. But I have been having a problem with defining functions. For example,diff :: Float-> Float  diff = if x>= y then x-y else y-x<interactive>:1:29: parse error on input `='It is rather weird as I have checked quite a few websites and this was supposed to work.The same occurs when I try for guarded rules, except that it is now for |.diff :: Float -> Float -> Floatdiff x y | x >= y = x - y| otherwise = y - x<interactive>:1:42: parse error on input `|'Please do help!Thanks a lot.        
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20110725/4858ef6b/attachment.htm>

Reply | Threaded
Open this post in threaded view
|

Problem with defining functions and guarded rules

Mike Meyer
On Mon, 25 Jul 2011 05:38:40 +0000
This is still my display name <xning_90 at hotmail.com> wrote:

>
> Hi, I just started learning Haskell. But I have been having a problem with defining functions. For example,diff :: Float-> Float  diff = if x>= y then x-y else y-x<interactive>:1:29: parse error on input `='It is rather weird as I have checked quite a few websites and this was supposed to work.The same occurs when I try for guarded rules, except that it is now for |.diff :: Float -> Float -> Floatdiff x y | x >= y = x - y| otherwise = y - x<interactive>:1:42: parse error on input `|'Please do help!Thanks a lot.      

You're typing at GHCi, right? You can't create values at the top level
in ghci. You need to either put the things in a file and load them, or
use "let "

Prelude> diff = if x > y then x - y else y - x

<interactive>:1:6: parse error on input `='
Prelude> let diff = if x > y then x - y else y - x

<interactive>:1:15: Not in scope: `x'

<interactive>:1:19: Not in scope: `y'

<interactive>:1:26: Not in scope: `x'

<interactive>:1:30: Not in scope: `y'

<interactive>:1:37: Not in scope: `y'

<interactive>:1:41: Not in scope: `x'
Prelude> let diff x y = if x > y then x - y else y - x
Prelude> diff 20 10
10
Prelude> diff 10 20
10
Prelude>

--
Mike Meyer <mwm at mired.org> http://www.mired.org/
Independent Software developer/SCM consultant, email for more information.

O< ascii ribbon campaign - stop html mail - www.asciiribbon.org