Coordinates -> IO ()
где:
Map.Map - мапа из Data.Map,
Coordinates - это вложенные алиасы на (Double, Double)
и реализация:
startApp locationDB = do
putStrLn "Write first city!"
cityOne <- getLine
putStrLn "Write second city!"
cityTwo <- getLine
cityFromDB <- pure $ Map.lookup cityOne locationDB
return ()
Вопрос про линтер из vscode с hls: почему линтер выдает совет приписать явно let к cityFromDB <- pure $ Map.lookup cityOne locationDB
Это какой-то конвеншен он пытается соблюдать популярный или как? Если есть такой конвеншен, то зачем? Читабельнее?
Он пытается отучить вас писать ерунду. Ну или подсказать, что в коде остался черновик. И, да, не надо писать стрелку вместе с pure, это во-первых синтаксический мусор, а во-вторых скрывает намерение. Ну и может мешать оптимизациям наверно (чистые выражения можно поместить в оптимальное место).
Душность тут только в том, что у let не надо писать in. Подразумевается, что "in всё что что ниже по блоку". А так это обычный let. А где let, там может и where...
Ну тут есть любители абьюзить синтаксис ради экономии на скобках f do a do b Я, например, осуждаю такое
Две таблетки лиспа после еды, на пару недель.
Там просто таблетка, которую разламываешь пополам и ешь в два присеста. Главное — соблюдать баланс
Это походу дженерик какой-то
Я тоже осуждаю. Надо писать вот так f do a do b
То есть, я просто нарушил конвенцию типа этого: bind bind bind expr expr expr Ладно, гадать не буду пока 🙂. Хотел убедиться, что линтер не зря меня просит о чем-то. Нужно сначала рассахарить do, потом найду ответ
Ты тут под вот этим бибиндом имел ввиду "сначала всё биндим, потом пишем выражения"?
потому что проще сразу обобзначить, чем заворачивать-разворачивать. выглядит как бессмысленный прыжок на месте
Обсуждают сегодня