我有很多字段的數據類型,如果不是由JSON配置文件手動指定,應隨機設置。我正在使用Aeson來解析配置文件。做這個的最好方式是什麼?如何從IO使用解析器從Aeson
目前,我設置的值等於一些不可能的值,然後再檢查所述值進行編輯。
data Example = Example { a :: Int, b :: Int }
default = Example 1 2
instance FromJSON Example where
parseJSON = withObject "Example" $ \v -> Example
<$> (v .: "a" <|> return (a default))
<*> (v .: "b" <|> return (b default))
initExample :: Range -> Example -> IO Example
initExample range (Example x y) = do
a' <- if x == (a default) then randomIO range else return x
b' <- if y == (b default) then randomIO range else return y
return $ Example a' b'
我想什麼是沿着線的東西:
parseJSON = withObject "Example" $ \v -> Example
<$> (v .: "a" <|> return (randomRIO (1,10))
是否有可能來定義IO單子或線程分析器沿着一些隨機生成,最理想的是採用埃宋?
正如@danidiaz所提到的,這基本上是對'Compose Parser IO'使用'Applicative'和'Alternative'實例。人們可以直接使用這種類型,或者將其用作在更大的開發中編寫此類代碼的進一步指導。 –