Alexander
можно написать соотвующее семейство
Alexander
пока лябмды писать не надо, все норм
кана
то есть не написать семейство Apply id Int которое в Int свапнет
Alexander
кстати через тайпклассы должно быть даже реально
Alexander
/me отложил в Todo list
Alexander
как в irc оно не рабоатет
Andrew
Alexander
Обращайся 😊
ena
После скрипения шестернями я пришла к следующему
ena
Он пинается на необъявленную переменную y
Arseniy
кана
кана
в скоупе нигде нет y
ena
а как же считывание в консоли?
ena
Как ему тогда донести что переменная приедет извне?
кана
- ты читаешь var
- ты создала новый var
доня.
Alexander
Он пинается на необъявленную переменную y
Направление - верное.
Таки да, в третьем let нет этой переменной y. Функция var сейчас не имеет аргументов, и ей доступны только предыдущие функции: inc, add (и даже main). Но не аргументы этих функций. Аргументы у функций в let-конструкциях - вещь приватная, только для своей функции предназначенная.
кана
что есть код
main = do
let x = 10
y <- read <$> getLine
let z = x + y
print z
это
main =
let x = 10 in
(read <$> getLine) >>= \y ->
let z = x + y in
print z
Alexander
После скрипения шестернями я пришла к следующему
Тут сейчас два разных var получаются. Тот, что в let-конструкции, и тот, что связан с помощью оператора "<-". Но так, конечно, нельзя. var должен быть либо тот, либо этот
доня.
ena
стирание строки с третьим let привело к новым ошибкам
доня.
кидай ошибки
ena
ща второй скриншот прилетит
ena
доня.
я думаю надо inc проаннотировать чтобы было понятно что там конкретно за тип
Кабачок
доня.
ну типа
let inc :: Int -> Int
inc = (+) 1
Alexander
Ну тут, да, есть небольшая проблемка в том, что read может строчку распарсить как разные числовые типы: Int, Integer, Float или что-нибудь еще. Вот он и не знает, во что хочется парсить. Можно пофиксить, добавив аннотацию типа, например, так:
printf ....... (var :: Int)
Alexander
Ну или вон, варианты выше. Где-то надо указать конкретный тип
parket
ena
Оно сбилдилось
*слезы счастья*
Alexander
Чатик не бесполезен!
Кабачок
ena
спасибо :3
Alexander
Обращайся. 😊
ena
Оно даже работает как я ожидала
ena
Это не плюсы
parket
Было точно такое-же :/
Суть а том, что id тут - value level. Я хочу определить только тип id, без реализации. Сигнатуры типа достаточно для вывода
кана
вообще можно типа
type Id = forall a. a -> a
f (Proxy :: Id) (Proxy :: Int) = undefind :: Int
ena
ena
я не слышала о линтере для Haskell
Дмитрий
Hlint?
ena
Это для atom
Aleksei (astynax)
hlint прикручивается ко всему, в т.ч и к атому
Vasiliy
вот этот hlint https://github.com/ndmitchell/hlint
ena
к st его можно прикрутить?
Aleksei (astynax)
можно
ena
еееее
Антон
Aleksei (astynax)
можно
А можно просто периодически запускать в терминале
Cheese
я бы не сказал, что hlint офигенно помогает при редактировании кода
Дмитрий
Для новичков он просто супер.
кана
вообще не люблю hlint
Дмитрий
Но он сильно устарел.
Aleksei (astynax)
Обновляется же
Aleksei (astynax)
Нужно просто ему указывать расширения, если они не указаны в каждом файле
кана
вот это проблема кстати
Дмитрий
В последний раз, когда я его пытался, он не умел в мультиф и лямбдлкейс
Cheese
кана
дублировать список в package/cabal, stylish, hlint
кана
Aleksei (astynax)
hlint не будет ругаться на всякие TypeApplications
кана
дублировать все равно придется
Aleksei (astynax)
Сделай генератор .hlintrc и конфига для stylish по package.yaml
Aleksei (astynax)
Чего желуешься то? :)
кана
я кстати думал об этом, через hpack прямо
кана
а то пока от него профит только в yaml-синтаксисе
Антон
Aleksei (astynax)
Есть разные инструменты, которые пишут разные люди. Не все используют всё из упомянутых инструментов. И hpack тоже не все используют
кана
Aleksei (astynax)
Не все используют stylish. Кто-то brittany, например, использует
кана
так он и не будет генерировать если это явно не указать
кана
в худшем случае систему плагинов и получится вебпак
Aleksei (astynax)
то-то и оно
Антон
Aleksei (astynax)
А откуда ему взяться? Кол-во людей, использующих одновременно hpack, hlint и stylish-haskell крайне мало. И никто не сподобился написать пока
Антон
Резонно