Alexander
можно написать соотвующее семейство
Alexander
пока лябмды писать не надо, все норм
кана
то есть не написать семейство Apply id Int которое в Int свапнет
Alexander
кстати через тайпклассы должно быть даже реально
Alexander
/me отложил в Todo list
Alexander
как в irc оно не рабоатет
Alexander
Обращайся 😊
ena
После скрипения шестернями я пришла к следующему
ena
Он пинается на необъявленную переменную y
Arseniy
кана
Он пинается на необъявленную переменную y
которой у тебя вообще нигде нет
кана
в скоупе нигде нет 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
Уже был вариант :t id (undefined :: Int)?
Было что-то похожее. Спасибо.
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
речь шла о ST3
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)
Для новичков он просто супер.
У hlint есть, увы, не самые полезные советы
Дмитрий
Но он сильно устарел.
Aleksei (astynax)
Обновляется же
Aleksei (astynax)
Нужно просто ему указывать расширения, если они не указаны в каждом файле
кана
вот это проблема кстати
Дмитрий
В последний раз, когда я его пытался, он не умел в мультиф и лямбдлкейс
Cheese
У hlint есть, увы, не самые полезные советы
и на сложном коде может даже врать
кана
дублировать список в package/cabal, stylish, hlint
Aleksei (astynax)
вот это проблема кстати
Не проблема. Можно ещё в .hlintrc для проекта указать
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 крайне мало. И никто не сподобился написать пока
Антон
Резонно