
Hello, If you define your constructor like this:
data ScrConfig = ScrConfig [ ScrUple ] deriving (Show)
it means that you need to give a list to the data constructor ScrConfig. It will then return the type ScrConfig, which is what you want. In GHCi: Main*>:t ScrConfig ScrConfig :: [ScrUple] -> ScrConfig This means that you do not have to declare sc1 as type ScrConfig, it is inferred by the compiler. So the declaration :
ScrConfig sc1 =ScrConfig( [s2 s1] ) ;
should be: sc1 =ScrConfig( [s2 s1] ) ; The second point is that you do not give a list to ScrConfig, as list elements are separated with a comma in Haskell: [s2, s1]. So sc1 becomes: sc1 =ScrConfig( [s2, s1] ) ; and this will fix your first error. By the way, you do not need to add parens around the list, nor a semicolon at the end of the line. They do no harm here, but I find it clearer without. So I would write sc1 like this: sc1 = ScrConfig [s2, s1] Hope that helps, Adrien