Vsevolod
Йо, простите, что врываюсь посреди разговора, но может кто посоветовать толковую IDE для Haskell?
Alexander
толковую врятли кто может
Alexander
люди пишут на всем от vscode до vim
Alex
Рекомендую visual code и плагин haskelly поверх
Alexander
@al_bl судя по тому что у тебя написано выше, то должно работать
Alex
Плагины там очень легко устанавливается
Alex
@al_bl судя по тому что у тебя написано выше, то должно работать
Да, но к сожалению оно не работало:) Но не беда, я её сам написал
Alexander
почему в прошедшем времени, исправил ?
Alex
Там есть предефайненые команды для стака, но их мало Да
Alex
Да, я её написал сам
Vsevolod
Хорошо, спасибо
Alex
Alex
Очень горжусь этим
Илья
/shrug
Alexander
@al_bl а ну функцию только в 1.4.2 добавили, у тебя 1.4.1.2
Alex
А как мне достать новую версию?
Alexander
build-depends: filepath >= 1.4.2
Alexander
но оно идет с ghc нужно быть поосторожнее с обновляниями этих либ
Alexander
т.к. если нужно будет ghc как либу использовать - то привет конфликты
Alex
А если я обновлю ghc то все решится?
Alexander
ну этот вопрос решится
Alexander
но я бы с обновления filepath начал
Alex
Понял
Alex
Спасибо большое:)
A64m
transformers сделали отдельно от mtl исключительно для любителей haskell 98 же
ну не совсем, когда появились семейства типов решили что так можно будет сделать другие аналоги мтл, более новыми средствами, но совместимо. Но особо не сделали ничего
Alexander
позовите картера!
Alexander
он знает как сделать
Leonid 🦇
Поднимите мне веки!
A64m
версия ghc 1.x лет 15 назад была
никогда не было, с 0.X сразу на 2.X
Alexander
о, как лучшие ынтырпрайзы
A64m
2 был почти с нуля написан и поддерживал хаскель 1.3 1.4 , а нулевую ветку хотели продолжать чтоб поддержка более старых версий репорта была, для нее 1 зарезервировали, но потом забросили и так и не сделали
Alex
о, как лучшие ынтырпрайзы
Еще раз большое спасибо за помощь, я доделал свой таск, без вас у меня бы не вышло:)
Alexander
всегда пожалуйста
Nikolay
Поясните пожалуйста разницу между конструктором типа и конструктором данных
Alexander
конструктор типа создает тип, конструктор данных создает данные. Поскольку haskell не dependent type язык, то первое живет в compile time, второе в runtime
Alexander
data TypeConstructor = DataConstructor
Alexander
data TypeConstructor a = DataConstructor a вот так будет лучше
Alexander
TypeConstructor :: * -> *
Alexander
DataConstructor :: a -> TypeConstructor a
Alexander
т.е. TypeConstructor применяется к типу и создает новый тип
Alexander
DataConstructor - применяется к значению типа a и создает значение типа TypeConstructor a
Nikolay
Если я пишу data R = S | F Int
Nikolay
Где тут что?
Alexander
ну где тут тип, а где данные?
Alexander
(я могу сразу ответить, если не хочется на вопросы отвечать)
Nikolay
Просто я не понял из изначального объяснения . Пока не уловлю идею
Nikolay
Не пойму зачем эти 2 разных понятия нужны.
Alexander
вот что значит это выражение data R = S | F Int своими словами можешь сказать?
Alexander
> An algebraic datatype declaration has the form: data cx => T u1 … uk = K1 t11 … t1k1 | ⋅⋅⋅ | Kn tn1 … tnkn where cx is a context. This declaration introduces a new type constructor T with zero or more constituent data constructors K1, …, Kn. In this Report, the unqualified term “constructor” always means “data constructor”.
Nikolay
Обьявляю новый тип Result, который или S или F с кодом ошибки
Alexander
вот цитата из Haskell Report
Alexander
новый тип Result, который имеет конструкторы S или F
Alexander
т.е. слева от равно тип, справа, значения
Alexander
(всякие DataKinds пока не рассматриваем)
Nikolay
т.е справа конструктор данных?
Alexander
да
Alexander
с помощью "функций" S и F ты можешь создать значение
Nikolay
а почему нельзя просто значением назвать? type value?
Alexander
чтобы путаться?
Alexander
оно имхо имеет смысл в dependent type languages где разница действительно сложно уловима
Alexander
ну и data T = T Int
Alexander
здесь есть конструктор типа T, и констуктор данных T
Alexander
неплохо бы было уметь их отличать иногда
Nikolay
dependent type languages - а это какие языки для примера?
Alexander
coq, idris, adga
Alexander
ats
Nikolay
спасибо. буду переваривать.
Alexander
https://www.haskell.org/onlinereport/haskell2010/haskellch4.html#x10-690004.2.1 там вон аж есть информация
Cheese
а почему нельзя просто значением назвать? type value?
потому что данные и типы — это разные вещи
Alexander
ну можно сказать type value constructor, и data value constructor
Alexander
но толку, просто +1 слово
Cheese
наверное, у товарища есть опыт в языках, где есть только конструкторы значений, но они принадлежат типам и не объявляются явно, и поэтому нет ничего плохого, чтобы сказать, что это конструкторы типов
Cheese
в Хаскеле этот опыт может мешать
Cheese
например, если в С++ написать class C {};, то С будет конструктором типа (в терминах Хаскеля), однако не принято говорить, что С — конструктор типа, это просто тип, и всё. имя типа С будет автоматически именем конструктора (конструкторов) значений, даже если явно об этом не объявить
Alexander
кабал такой кабал блин
тот
у кого под рукой ссылки на документацию, видео по обучению хаскела - скидывайте, используйте #знание или что-то такое
тот
кабал такой кабал блин
как понял, мир переломился на до stack и stack
Alexander
какая разница, стек использует ту же инфраструктуру