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 <byor...@seas.upenn.edu> wrote: > 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 >
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe