Anonymous
Идрис просто недоделан. сейчас его автор вроде бы бросил чинить баги, и занялся переписыванием компилятора с Х-я на Идрис.
A64m
а эти "одни языки"-то существуют вообще? А то вроде все "тысяча и одно расширение"
Anonymous
есть же шутка, что самый большой проект на ghc это само ghc
кана
Может кто рассказать, какие есть движения в сторону нового стандарта, где расширения смержены? Или где искать про это?
A64m
ну т.е претензия к тому, что в отличие от обычного имплементейшн-дефайнед языка, можно как-то изобразить старую версию что-то выключая/не включая?
A64m
что значит "расширения смерджены"?
Кабачок
A64m
а, ну да
Anonymous
в Джаве сделано иначе. есть номера старой версии Джавы, компилятор может поддерживать совместимость с выбранной версией. но версий очень мало :) а в Х-е за счет возможностей кмбинирования расширений получается комбинаторный взрыв возможных языков.
Anonymous
Alexander
Alexander
если запилят то хорошо, если нету, то единственная проблема это наличие хейтеров, у которых какие-то проблемы со строчками {-# LANGUAGE в начале файла
A64m
так я так и не понял, что значит "смерджить расширения"? По-моему, в ghc они и так "смерджены", в отличие от рекета, например
кана
Имею в виду сделать их включенными по дефолту (не всех, конечно) и разобраться с конфликтами
Какие-нибудь флексабл вполне можно сделать включенными по дефолту, работу с каиндами тоже
Anonymous
A64m
что за конфликты-то?
A64m
нормальный это какой?
Alexander
наверное идрис?
A64m
отказать, отказать
Alexander
хотя что в нём нормального не понятно
Alexander
@zraffer ну ты можешь рассказать какие проблемы в расширениях, и я поверю что ты не хейтер
A64m
ну по сравнению с многими языками он нормальный, конечно
Anonymous
нормальный это какой?
нормальный - это когда язык один. опции - должны быть опциями компилятора, а не языка. они могут менять нюанс компиляции, но не включать целые куски языка. так, вроде, еще с сишечки повелось :) это только Х-ь принял такой решение - поддерживать целый зоопарк языков в одной упряжке.
Alexander
для себя я вижу чем меня устраивают расширения и я понимаю почему я их не пишу в default-extensions
A64m
прямо скажем, подавляющее большинство расширений лучше бы действительно включались по умолчяанию или в большой пакет
A64m
Dmitry
> вроде, еще с сишечки повелось
-std=gnu99
кана
Anonymous
проблемы - начиная с уровня вхождения. хоть эльфийский Идрис, хоть рабочекрестьянский Голанг, - это одна спецификация языка. человек ее читает подряд. а с Х-м надо понимать, как выглядит язык, когда эа опция включена, как он выглядит, когда выключена... Вы все это уже понимаете, и не задумываетесь о таких проблемах. это все следствие выбранного разработчиками ghc решения, и это никак не связано с особенностями ФП.
A64m
т.е. есть базовый хаскель, который Х-М и все совместимые с ним расширения в ключаются в него с течением времени. Не факт, что он должен быть по-умолчанию, это легаси хаскель уже.
есть новый хаскель, который со всеми FC фичами, неполиморфными летами и т.д.
отдельно включаются только спорные вроде андесайдабл и адовые фичи вроде когерентности инстансов
A64m
проблемы - начиная с уровня вхождения. хоть эльфийский Идрис, хоть рабочекрестьянский Голанг, - это одна спецификация языка. человек ее читает подряд. а с Х-м надо понимать, как выглядит язык, когда эа опция включена, как он выглядит, когда выключена... Вы все это уже понимаете, и не задумываетесь о таких проблемах. это все следствие выбранного разработчиками ghc решения, и это никак не связано с особенностями ФП.
когда GADT включены выгладит как хаскель с 2008 года, а когда выключаны как хаскель до 2008года, например.
A64m
с другими языками все то же самое
A64m
ну так можно считать что и в хаскеле так
Кабачок
A64m
т.е. вот появилось расширение, это часть хаскеля с версии в которой оно появилось
A64m
кроме твиков тайпчекера и поиска инстансов указанных выше
Aleksei (astynax)
LambdaCase, TupleSections, MultiWayIf - эти то точно можно включить по-умолчанию. Но тогда станет "больше синтаксиса"
A64m
Vasiliy
Vasiliy
то, что описано в стандарте? там никаких расширений нет
A64m
ну то же что называют растом и окамлом - текущую релизную версию единственной имплементации
Dmitry
-std=gnu - это же то же самое, что -fglasgow-exts у хаскеля
Евгений
с другими языками все то же самое
Есть только один язык, с которым "то же самое". И этот язык настолько ненавидим всеми, кто на нём пишет, что раз в три года придумывается новый способ убежать от него. Угадаете о ком я говорю?
Vasiliy
петон
Евгений
Нет
Dmitry
ES2015?
A64m
Евгений
Та дам
A64m
но он не один такой
Евгений
Хаскель это плюсы фп мира
Anonymous
я не игнорирую, просто не понимаю разницы
число языков. если мы замораживаем версию языка по состоянию на "99-й год" и указываем это при компиляции, то выбор у нас из небольшого числа таких версий, обычно менее десятка. архитектурное решение ghc - расширения - позволяет их комбинировать, что в результате дает экспоненциальное число возможных диалектов. Вы видите в этом плюс?
A64m
в SML тоже расширения, к примеру, что еще разными имплементациями осложняется, ну так что?
Vasiliy
плюсы раз в три года обновились пока что только два раза
A64m
Anonymous
A64m
A64m
просто он разных версий, как любой имплементейшн-дефайнед
A64m
ну да, в каждой версии можно отключить что-то чтоб не компилировалось
Anonymous
Anonymous
только не версий компилятора
A64m
в среднем примерно одна в год
Anonymous
а версий языка
A64m
ну так как в окамле или сишарпе это по факту одно и то же
A64m
это называется "определяемый имплементацией язык"
Anonymous
там да! потому что делается все иначе.
A64m
иначе, но эта инакость никакого принципиального значения не имеет
A64m
т.е. на практике разницы нет
Anonymous
Anonymous
на практике каждый хаскельный файл начинается с уточнения, на каком из тысячи диалектов он написан :)
A64m
и, видимо, какой из тысячи вариантов стандартной библиотеки он использует - импорты-то разные - а комбинаций-то сколько, значит библиотек не меньше бразиллиона
Vasiliy