. А вот такой вариант насколько некрасив еще?
loadConfigDB :: IO (Either String ConfigDataBase)
loadConfigDB = join
<$> either (Left . displayException) (Right . eitherDecode)
<$> try @SomeException (L.readFile "config/db.cfg")
ну, тут лишнее заворачивание-разворачивание, из-за которого приходится join применять
уберите Right
do обычно лучше читается, чем fmap loadConfigDB = do bytesE <- try @SomeException $ L.readFile "config/db.cfg" pure $ either (Left . displayException) eitherDecode bytesE
так работает. А вот если в моем примере убрать Right, то рушится с "Error in $: expected an object with a single property where the property key should be either \"Left\" or \"Right\"
а join вы тоже убрали?
Нет конечно.
да, я думал, что компилятор подскажет убрать join, а он вместо этого вывел лишний тип
Обсуждают сегодня