
Students and ID are constructors, not types. You need to change the
type signature from:
popStudents :: [String] -> Table Students ID
to:
popStudents :: [String] -> Table StudentsOrActivities Value
You might want to re-think the way you're doing this though, as I
don't think this is really want you want. Maybe you need to make
Students and Activities seperate types and create some sort of common
class that they can both be instances of? What exactly do they have in
common with each other? If you're just trying to create an abstraction
over a SQL table, you should probably look at the way HSQL or one of
the other SQL libraries handles the issue (usually with a class that
requires a fromSQL function or similar).
-R. Kyle Murphy
--
Curiosity was framed, Ignorance killed the cat.
On Mon, Aug 30, 2010 at 12:55, Michael Litchard
Okay, ski (of Freenode fame) helped me with the first problem. Now I need to figure out how to use specific types.
given
module Main where import System.Environment import PrepData
data ProcessData = ProcessData { flatfile :: String , processfunc :: [String] -> Table StudentsOrActivities Value }
main = undefined
and
module PrepData where data Value = Cost Int | ID Int type Tname = String data StudentsOrActivities = Students String | Activities String data Table soa v = PopTable { tableName :: Tname , tableColumns :: [(soa, v)] } deriving (Show, Read)
popStudents :: [String] -> Table Students ID popStudents flatFile = undefined
is it clear what I am trying to do in popStudents?
here's the error I get PrepData.lhs:10:35: Not in scope: type constructor or class `Students'
PrepData.lhs:10:44: Not in scope: type constructor or class `ID' _______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners