[
Size: a a a
[
AP
E
[

E
cod <- o .: "cod" :: Parser Double, а стало cod <- o .: "cod" >>= parseCod, это компилируется но не дает результата[
\v -> withText "Foo" (\text -> pure . StringConst . Text.unpack $ text) v
<|> withScientific "Foo" (\num -> pure . NumberConstr . scientificToInt $ num) v
[
E
E
E
E
AP
import qualified Data.ByteString.Lazy.UTF8 as BSL8
newtype Code = Code Double deriving Show
instance FromJSON Code where
parseJSON x = Code <$> (parseJSON @Double x <|> fromText x)
fromText v =
maybe (fail "Non-number") pure =<< decode @Double . BSL8.fromString <$> parseJSON vAP
> decode @Code "\"42.0\""
Just (Code 42.0)
> decode @Code "42.0"
Just (Code 42.0)
> decode @Code "foo"
NothingAP
E
E
E
AP
AP
E
@Code я же еще ребенок