Closed DonDokidon closed 3 years ago
в данном конкретном случае там все в do-нотации, проще наверно без where сделать
botSettings <- setBotTypeSettings botT vkGroup vkTok tTok
initEnvironment msg rep prior botSettings
в целом понятна мысль, хотя байнды мне нравились)
Тут, наверное, спорный момент. Просто я считаю, что по левую сторону do блока должны идти все важные для понимания последовательности действий функции. И, на мой взгляд, то что мы инициализируем environment - довольно важная штука в последовательности наших действий. А вот, например, штуки вроде этого maybe -> a <- mbGetRequiredThing >>= maybe throwError pure
нам в этой последовательности не особо важны, их мы при помощи байндера и выносим туда, где они место не занимают.
P.S. ну я и не говорил что-то здесь в where выносить, я сказал, что байндер можно применять в таких вот функциях ( getRepeatCount a = maybeRead a >>= return . max 1 >>= return . min 5
), но их все равно нужно выносить в where :)
мне кажется, в таком случае байнды уместны:
telByteStringToPureMessageList env bytestring =
decodeByteString env bytestring >>= telUpdatesToPureMessageList env
тут последовательность функций задается, или тоже в where выносить?
Ну конкретно эта функция достаточно короткая, чтобы оставить ее такой, но лично я бы все равно написал ее через do блок
ок, убрала байндеры кроме совсем элементарных случаев
https://github.com/KateBu/bot-1.3/blob/04be57027cfa47804428e1bd90c163b4fcb8b70b/src/Environment/InitEnvironment.hs#L37
Имхо ты абузишь байндеры. Код должен читаться сверху вниз, одна строчка на одно действие. А ты его байндерами еще и вправо увозишь. Байндеры стоит применять, когда ты байндишь что-то совсем простое (
>>= return . Just
), или когда из кучки "нейтральных" функций нужно сделать какую-то "осмысленную", которой можешь дать название. И во втором случае ты с этим названием выносишь эту функцию вwhere