[Haskell-beginners] How to "cast" FromJSON instance value

Baa aquagnu at gmail.com
Tue Aug 1 11:01:17 UTC 2017


Hello, Jan! I "remove" the question :)
Problem was: reading of HTML form values, which can be any type and
saving them in a map. I done it w/ `Map Text Value` (instead of previous
`Map Text Text`). To get values from the map, I implemented class and
several instances which returns values of different types, something
like:

  class GetValue a where
    getValue :: Text -> Map Text Value -> a

(promoting of `a` anywhere in the existing code needs big refactoring,
so map's value is `::Value` but not `::a`). Cons is a need to implement
N instances of `GetValue`: one per getting type.

Anywhere, Jan, thanks for quick answer, I'm sorry for this stupid
question.


> Hi,
> 
> You don't know anything about your a's but that they have FromJSON
> instances. That in turn means you can get values from aeson parsing
> functions. Think parseJSON :: Value -> Parser a
> Could you be more specific about the problem you try to solve?
> 
> Best
> Jan
> 
> Baa <aquagnu at gmail.com> schrieb am Di., 1. Aug. 2017, 10:32:
> 
> > Hello, List!
> >
> > I have, for example, function with signature like
> >
> >   fn :: FromJSON a => Map Text a -> BlahBlah
> >
> > and I want to treat this `a` as String (or `Text`), to read it with
> > `readMaybe`. Am I right that it's impossible? I get error about
> > "...a is rigid type and could not be matched with Text...". But
> > `Text` is `FromJSON` instance. Is it possible to do it (cast,
> > convert, unwrap, etc)?
> >
> > The problem's source is that early I worked with `Text` values only
> > (getting from HTML form) but now they become any type: int's,
> > bool's, etc).
> >
> > ===
> > Best regards,
> >   Paul
> > _______________________________________________
> > Beginners mailing list
> > Beginners at haskell.org
> > http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
> >  



More information about the Beginners mailing list