Size: a a a

2021 November 01

AP

Aleksei (astynax) Pi... in Haskell Start
Это тот же read, который просто не падает с грохотом
источник

E

Elijah in Haskell Start
упрощу до read чтобы меньше держать в голове
источник

E

Elijah in Haskell Start
я понимаю как устроен readMaybe
источник

E

Elijah in Haskell Start
я не понимаю только почему можно вытащить из Left, но нельзя вытащить сразу из Value
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Потому что Left — один вариант, а Value — почти десяток (ну ок, шесть)
источник

AP

Aleksei (astynax) Pi... in Haskell Start
И что значит "вытащить"?
источник

E

Elijah in Haskell Start
спаттернматчить и затем применить к нему read
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Так read и к Left не нужно применять, не только к Value
источник

[

[BRM]White Rabbit in Haskell Start
ты в середине парсинга падать хочешь?
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Можно не падать с readMaybe. Но это плохой способ вычитать число
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Потому что Read призван парсить практически произвольные литералы Хаскеля. А не числа
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Вот эта "практическая произвольность" — оверкилл для большинства задач
источник

E

Elijah in Haskell Start
условно говоря:
case x of
Left s -> pure $ read s -- вот так работает

case x of
 String s -> pure $ read s -- вот так не работает

даже если я все возможные конструкторы Value опишу, и даже если сделаю нечто вроде _ -> pure defaultCodeNum
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Даже в этом случае
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Код всё равно упадёт
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Haskell не переходит к Right, если уже после распаковки Left всё взорвалось
источник

E

Elijah in Haskell Start
сейчас я сформулирую свой вопрос точнее
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Есть у вас JSON на входе, часть чисел в котором описана строками —  вот и разбирайте эти строки как JSON. Потому что велика вероятность того, что числа в этих строках закодированы так же, как и нормальные числа. И JSON кодирует числа не так, как хаскель кодирует числа в своих литералах.
источник

AP

Aleksei (astynax) Pi... in Haskell Start
case x of
 Left _ -> pure $ error "foo"
 Right _ -> ...
тут до pure не дойдёт
источник

AP

Aleksei (astynax) Pi... in Haskell Start
потому что error — останов программы, а не фейл соответствующей монадки
источник