Unless you have a 'real' type for parse sometime during compile time, TH won't be able to generate it. A good rule of thumbs is that if you can't write the code yourself, then you can't get TH to do it either. /J On 27 October 2010 08:50, Andy Stewart <lazycat.manatee@gmail.com> wrote:
Serguey Zefirov <sergueyz@gmail.com> writes:
2010/10/27 Andy Stewart <lazycat.manatee@gmail.com>:
Hi all,
I want use TH write some function like below:
data DataType = StringT | IntT | CharT
parse :: [(String,DataType)] -> (TypeA, TypeB, ... TypeN)
Example:
parse [("string", StringT), ("001", IntT), ("c", CharT)]
will return:
("string", 001, 'c')
So how to use TH write 'parse' function?
I think that you should use TH properly, without compiler and logical errors.
What actually do you want? I'm build multi-processes communication program.
Example i have two processes : Client and Server.
At Client side, i pass [DataType] to Server, example:
[StringT, IntT, CharT]
Server will handle "user input" with [DataType] and return result [String] to Client side, example:
["string", "001", "c"]
Then at Client side, i need parse [String] to get real value:
("string", 001, 'c')
Because, [DataType] have many different case, so i want pass [String] between processes, and use TH parse result [String] at Client side.
Thanks,
-- Andy _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe