Jun. 18th, 2013
traverse блин
Jun. 18th, 2013 04:33 pmА прикольно, я годами ломал голову, какая фигня и что делать, если тебе нужен какой-нибудь там список или множество, а ты получаешь с возможной ошибкой, и как это превратить или в список ошибок или в хороший список результатов; ну дык, апликативный функтор, traverse, всек дела. Для хаскельщиков это как бы примитив, а я вот ну типа месяца два только как начал это непринужденно пользовать. Открытий чудных.
Что тут происходит. Я на браузере гоняю код, который выдёргивает таблицы внутри данного спана и возвращает, согласно договору с мозилой, массив массивов строк - или ексепшен бросает с объяснением почему нет; я это дело подхватываю, превращаю массив массивов в список списков; ну мне нужны две таблицы, поэтому я это делаю 1 to 2; но могла вкрасться какая-нибудь ошибка - если таковая есть, то tables будет иметь вид Bad(someErrorList).
val tables = Result.traverse( (1 to 2) map (i => ExtractTableRowsV2(s"span#coverageMedicalSpendingPdf table:nth-of-type($i)").map(_.toList.map(_.toList))) )
Что тут происходит. Я на браузере гоняю код, который выдёргивает таблицы внутри данного спана и возвращает, согласно договору с мозилой, массив массивов строк - или ексепшен бросает с объяснением почему нет; я это дело подхватываю, превращаю массив массивов в список списков; ну мне нужны две таблицы, поэтому я это делаю 1 to 2; но могла вкрасться какая-нибудь ошибка - если таковая есть, то tables будет иметь вид Bad(someErrorList).
partial functions
Jun. 18th, 2013 06:10 pmDid you know that in scala PartialFunction is not a partial function? Namely, you compose two partial functions, the composition's domain is the same as the domain of the first one. Which is STUPID. Paul Phillips says oh, Scala pfs are not Math pfs.
Nice. I know how to bypass it; just use Kleisli for Option, big deal. But well...
I think that every time you break the laws of algebra or category theory, you just set a trap for future users.
Nice. I know how to bypass it; just use Kleisli for Option, big deal. But well...
I think that every time you break the laws of algebra or category theory, you just set a trap for future users.