[Haskell-cafe] a newbie's question
Paul Hudak
paul.hudak at yale.edu
Thu Apr 21 11:03:58 EDT 2005
Thomas Davie wrote:
> On Apr 21, 2005, at 3:47 PM, SCOTT J. wrote:
>> Hi,
>> I'm beginning to study Haskell, For the following
>> a = [1,2,3]
>> b = "there"
>> do x <- a
>> y <- b
>> return (x , y)
>> Winhugs cannot run it. Gives
>> Syntax error in input (unexpected backslash (
>> lambda))
>
> Your problem is that you're using monads to grab the contents of a and
> b, while a and b are not monadic... You probably if you're only just
> setting out don't want to pay attention to any of the do notation or
> monadic code. To get the result it looks like you want, all you need
> to do is this:
> (a, b)
> you can then define this as a new constant:
> c = (a, b)
> Hope that helps
> Bob
On the other hand, perhaps he wanted all possible combinations of values
in the lists a and b. Since a list is a monad, this, for example, works
fine:
a = [1,2,3]
b = "there"
abs = do x <- a
y <- b
return (x,y)
In Hugs:
abs ==>
[(1,'t'),(1,'h'),(1,'e'),(1,'r'),(1,'e'),(2,'t'),(2,'h'),(2,'e'),(2,'r'),(2,'e')
,(3,'t'),(3,'h'),(3,'e'),(3,'r'),(3,'e')]
-Paul
More information about the Haskell-Cafe
mailing list