On Thu, Sep 2, 2010 at 9:31 PM, Andrew U. Frank <fran...@geoinfo.tuwien.ac.at> wrote: > I have a user input (string) and need to select one of two types. > depending what the input is. is this possible? > > data A > data B > > data X n = X String > > op :: String -> X n > op "a" = X "a" :: X A > op "b" = X "b" :: X B > > this does obviously not compile. is there a way to achieve that the type > X A is produced when the input is "a" and X B when the input is "b"? > > thank you for help! > andrew > > > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe >
Here's another way of not quite doing what you want: op :: String -> Either (X A) (X B) op "a" = Left (X "a") op "b" = Right (X "b") which is roughly how I translate the recent discussion about type-level validity certification: http://www.haskell.org/pipermail/haskell-cafe/2010-August/082899.html _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe