
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 9, 2010 at 17:42, Brent Yorgey
On Tue, Mar 09, 2010 at 08:42:44PM +0100, Sebastian Hungerecker wrote:
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.
Not quite; data Bool = True | False, and the code uses a lowercase 'f' '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