Seems like a good time to mention the Maybe monad looks like it would be a good fit here.
score :: String -> String -> Maybe String
score s [] = Nothing
score s g =
if valid 4 g
then let s1 = "Golds "
s2 = show (gold s g)
s3 = ", Silvers "
s4 = show (silver s g)
in Just (s1 ++ s2 ++ s3 ++ s4)
else Just "Bad Guess"
-R. Kyle Murphy
--
Curiosity was framed, Ignorance killed the cat.
On Tue, Mar 09, 2010 at 08:42:44PM +0100, Sebastian Hungerecker wrote:Not quite; data Bool = True | False, and the code uses a lowercase 'f'
> On 09.03.2010 20:04, boblettoj wrote:
>> score :: String -> String -> String
>> score [s] [] = false
>> score [s] [g] =
>> if valid 4 g
>> then (s1 ++ s2 ++ s3 ++ s4) where
>> s1 = "Golds "
>> s2 = show (gold s g)
>> s3 = ", Silvers "
>> s4 = show (silver s g)
>> else "Bad Guess"
>>
>
> Apart from the parse error there is also a type error
> in your code:
> When the second argument is empty, you return false
> although you declared the function to return a String,
> not a boolean.
'false'. Perhaps 'false' is defined as a String somewhere else? A bit
odd, perhaps, but not necessarily a type error.
-Brent
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe