
Hi, I'm sorry because I am absolutely sure, this is bloody obvious to the knowing. Being a total beginner I'm stuck. In the main = do part I wrote: 1: if a == True then putStrLn "Yes!" else putStrLn "No." 2: if a == True then let b = "+" else let b = "-" Line #1 works perfectly well. Read line #2 as pseudocode and you'll see what I want to do. Read it in ghci and it produces " parse error on input `=' " I tried 'case of' but it doesn't work either. What am I doing wrong? Thank you for any help, Bernhard

Try this: let b = if a == True then "+" else "-" in ...
On Thu, Jun 25, 2009 at 4:12 PM, Bernhard Lehnert
Hi,
I'm sorry because I am absolutely sure, this is bloody obvious to the knowing. Being a total beginner I'm stuck. In the main = do part I wrote:
1: if a == True then putStrLn "Yes!" else putStrLn "No." 2: if a == True then let b = "+" else let b = "-"
Line #1 works perfectly well. Read line #2 as pseudocode and you'll see what I want to do. Read it in ghci and it produces " parse error on input `=' "
I tried 'case of' but it doesn't work either.
What am I doing wrong? Thank you for any help,
Bernhard
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners

Andrew Wagner wrote:
Try this: let b = if a == True then "+" else "-" in ...
The little figurine of Dijkstra in my head is urging me to write this as let b = if a then "+" else "-" in ... instead. ;) Regards, apfelmus -- http://apfelmus.nfshost.com

Well sure. I was assuming it was a simplified example... On Fri, Jun 26, 2009 at 7:30 AM, Heinrich Apfelmus < apfelmus@quantentunnel.de> wrote:
Andrew Wagner wrote:
Try this: let b = if a == True then "+" else "-" in ...
The little figurine of Dijkstra in my head is urging me to write this as
let b = if a then "+" else "-" in ...
instead. ;)
Regards, apfelmus
-- http://apfelmus.nfshost.com
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners

On Jun 25, 2009, at 1:12 PM, Bernhard Lehnert wrote:
1: if a == True then putStrLn "Yes!" else putStrLn "No." 2: if a == True then let b = "+" else let b = "-"
You can try: let b = if a == True then "+" else "-" Also, whenever you find yourself testing 'x == True' or 'x == False', you can reduce that to 'x' and 'not x' respectively, so you go down to: let b = if a then "+" else "-" Hope that helps. -johnnnnnnn

Am Donnerstag 25 Juni 2009 22:12:08 schrieb Bernhard Lehnert:
Hi,
I'm sorry because I am absolutely sure, this is bloody obvious to the knowing. Being a total beginner I'm stuck. In the main = do part I wrote:
1: if a == True then putStrLn "Yes!" else putStrLn "No." 2: if a == True then let b = "+" else let b = "-"
Line #1 works perfectly well. Read line #2 as pseudocode and you'll see what I want to do. Read it in ghci and it produces " parse error on input `=' "
I tried 'case of' but it doesn't work either.
What am I doing wrong? Thank you for any help,
Bernhard
let b = "+" is not a complete expression, thus cannot be a branch of 'if'. It should give a parse error on 'else' (and my ghci does). But (putStrLn "Yes!") is a complete expression, so can be used as a branch of an if- expression. You probably want to bind the name b to a value depending on a somewhere in main's do- block? That would be achieved so: let b = if a then "+" else "-" b can then be used in following statements. Outside of a do-block, you would have to write let b = if a then "+" else "-" in someExpression HTH, Daniel
participants (6)
-
Andrew Wagner
-
Bernhard Lehnert
-
Daniel Fischer
-
Gracjan Polak
-
Heinrich Apfelmus
-
John Melesky