Vladislav
да установить-то точно может одновременно, мне интересно, может ли попасть в один билд-план
A64m
да, речь про один билдплан
A64m
короче говоря речь о билд планах в результате которых в программе могут быть например две несовместимые по типам байтстроки
Vladislav
да, я про то же
Vladislav
т.е. в моем примере выше допустим A=bytestring
Vladislav
Я просто впервые слышу, что это убрали
A64m
просто я отдельно оговорил случай когда у A версия одна и та же, но у зависимостей разная потому, что до 7.10 гхц не умел так, но новый кабал в те времена мог построить бтилд план для 7.8 с разными байтстрингами но они должны били быть разных версий, а не просто с разными зависимостями
A64m
Может и не убрали вообще, но по умолчанию это вроде не работает теперь
A64m
возможно где-то можно включить, но я не знаю где
Alex
Джентельмены как нужно индентится в вложенных кейсах
Cheese
otherwise не надо в этом месте писать, надо _
Cheese
ужас какой
Alex
Ахахаха
Alex
Я только учусь
Cheese
вынеси по частям в обозначения в where
Cheese
if на входе в функцию можно заменить на гварды
convertType t v
| "int" `isPrefixOf` t || "uint" `isPrefixOf` t = ...
| otherwise = ...
Cheese
if v == "INVALID_ID" лучше будет в виде case v of "INVALID_ID" ->
Alex
Понял
Alex
Спасибо большое!
Cheese
после слова case для меток веток нужен отступ, и ещё один для содержимого
case (slice 3 4 t) of
"64" ->
"64"
"32" ->
"32"
Cheese
otherwise в кейсе формально может работать, но не так, как ожидается. лучше включить варнинги, чтобы компилятор указал на эту ошибку
Cheese
хм, а ведь можно было бы добавить pattern Otherwise = True в прелюдию, чтобы новички не наступали на это через одного
Cheese
otherwise нужен только для гвардов, то есть чтобы последним гвардом можно было написать | otherwise, и это был бы эквивалент else
Aleksei (astynax)
не, не надо!
Aleksei (astynax)
матчинг - всегда захват наматченного. А гарды - нет!
Cheese
Cheese
Cheese
Aleksei (astynax)
otherwise -> это capture. Кастомный паттерн здесь только "больше синтаксиса" сделает
Cheese
Aleksei (astynax)
Не хочешь матчить, делаешь _. Как везде.
Cheese
Cheese
особенно новички, пришедшие из языков, где есть if и нет паттернматчинга
Aleksei (astynax)
tail (_:xs) = xs
tail otherwise = []
тут то очевидная дичь
Aleksei (astynax)
Пусть учатся
Cheese
Cheese
Aleksei (astynax)
Будет ворнинг. И это правильно
Aleksei (astynax)
скорее уж убрать otherwise вообще, пусть будет True
Cheese
Aleksei (astynax)
Нужно учить новичка всегда делать -Wall
Aleksei (astynax)
А вообще - новичку тоже нужно думать, ибо полезно
Aleksei (astynax)
Cheese
давайте задепрекейтим otherwise!
Aleksei (astynax)
+1
Aleksei (astynax)
из за него ещё и раздвигать порой приходится лишнего!
Vladislav
в смысле раздвигать, зачем?
Aleksei (astynax)
f | x = "Foo"
| otherwise = "Bar"
фу!
Vladislav
Ну да, зачем так писать-то
Vladislav
funcname
| x = "Foo"
| otherwise = "Bar"
Aleksei (astynax)
не, HECPACUBO
Cheese
Cheese
Aleksei (astynax)
Воу! Тут же не стикерят!
Vladislav
😂
Cheese
сорьки
Aleksei (astynax)
Если не выравниваете = - не выравнивайте нигде! Ни в рекордах, ли в let!
Vladislav
не, HECPACUBO
1. субъективно, мне кажется никаких проблем
2. при ренейминге не надо перевыравнивать
Vladislav
Aleksei (astynax)
Вот! Так норм. Консистентненько!
Vladislav
специально еще в том примере | сбросил на следующую строку, чтобы при переименовании функции не перевыравнивать
Aleksei (astynax)
это да, тоже так делаю
Vladislav
т.е. у меня правило в том, что whitespace исходника инвариантен под переименованием сущностей
Vladislav
(еще я табами предпочитаю индентировать, потому что их на ноуте можно постаивть в 2 пробела, а на десктопе в 4, но в принципе уже привык к пробелам, ко всему можно привыкнуть)
Vladislav
когда в vim или emacs подвезут elastic tabstops (никогда), то можно будет начать всё табами делать
Dmitrii
Отсутствие выравнивания и правда помогает уменьшить diff на гите и необходимость перевыравнивать при переименовывании переменных. Но часто выравнивание (лично для меня) помогает зрительно разделить код, и читать становится проще. Но да, ждем elastic tabstops...
Cheese
Aleksei (astynax)
Ка это сделать в гитхабе?
Cheese
Aleksei (astynax)
хмм. А "включить для репозитория" нельзя?
Cheese
правда, из-за пробелов могут быть проблемы с автоматическим слиянием, но редко
Cheese
Cheese
Oleks
Привет, подскажите, делаю запрос в бд на удаление таким образом:
con <- liftIO conn
_ <- liftIO $ delTodoItem con
where
delTodoItem :: Connection -> IO [TodoItem]
delTodoItem c = query_ c "DELETE FROM todo"
удаление происходит, но при этом вылетает <interactive>: QueryError {qeMessage = "query resulted in a command response", qeQuery = "DELETE FROM todo"}
и дальше ниче не работает, что-то в запросе не так или в чем дело?
Алексей
Если пакет whateversqk-simple, то наверное нужен. execute, а не query
Oleks
Я использую postgresql-simple
Aleksei (astynax)
query что-то выбирает из БД и возвращает. DELETE, это команда
Aleksei (astynax)
нужно делать execute (или даже execute_)
Oleks
Да, точно,а что дает _ ? до этого без него пробовал и не срабобтало