
I'm intermediate-level myself so I hesitate to say something wrong, but I'll go ahead and point out the obvious. applebiz89 wrote:
Hey thanks, that was really helpful actually. I know it must be annoying for you, and im sorry but ive done what you said, try and compile it to see if it does and fix it. I have tried every possible way of using brackets in different place's etc (as u can tell Im not good with haskell at all) but it still isnt, it must be to do with my data type.
-- Film as datatype
data Film = String String Int [String]
This time you left something off what's called the constructor. (You had it there the first time!) data Film = Film String String Int [String] Because an algebraic data type can be constructed in potentially more than one way, you need a constructor. In this case, you have only one way of constructing a Film, so you just name the constructor Film also.
-- List of films
testDatabase :: [Film] testDatabase = ["Casino Royale", "Martin Campbell" ,2006, ["Garry", "Dave", "Zoe"] ]
And here your problem is that (1) you need to prefix the constructor when making a Film, and (2) don't use commas between arguments to the constructor. (In Haskell commas are for lists and tuples, and not for function arguments.) So this would be how to make one Film: aFilm :: Film aFilm = Film "Casino Royale" "Martin Campbell" 2006 ["Garry", "Dave", "Zoe"] or testDatabase = [ Film "Casino Royale" "Martin Campbell" 2006 ["Garry", "Dave", "Zoe"] ]
I get this error:
*** Expression : ["Casino Royale","Martin Campbell",2006,[("Garry","Dave","Zoe")]] *** Term : [("Garry","Dave","Zoe")] *** Type : [([Char],[Char],[Char])] *** Does not match : [Char]
Thanks alot!
applebiz