[Haskell-beginners] phantom type
PICCA Frederic-Emmanuel
frederic-emmanuel.picca at synchrotron-soleil.fr
Sat Mar 31 07:54:50 UTC 2018
Hello,
Here my problem.
I extract some information from a database and put them into a type with 50 parameters
Type MyData = MyData Int String ...
But I need to be able to differenciate two different case. depending on the String content.
something like if the String start with "ref-" it is a Caracterization and if not it is a Collect
So I end up with this solution
data Unchecked
data Caracterization
data Collect
data MyData t = MyData Int String ...
now I defined a function
getMyDataFromDatabase :: ... -> Mydata Unchecked
and isCollect in order to verify that I have a Collect and not something Else
isACollect :: MyData Unchecked -> Either Text (MyData Collect).
which use coerc in order to avoid copying all the members. It is great.
now Here is my problem.
I create a method
myMethod :: MyData Collect -> IO ()
but I want my method to work for MyData Collect and Mydata Caracterization but not Unchecked.
So It seems to me that I can not just do
myMethod :: MyData t -> IO ()
what is the right way to solve this problem ?
thanks for your help.
Frederic
More information about the Beginners
mailing list