Cheese
я имел в виду использовать Maybe a там, где хотелось использовать a с пустым значением
Anonymous
Чем же так плохо? class Defaulted a where default :: a
eahqzsr
Не с пустым а с дефолтным (определение дефолтности мы не услышали)
eahqzsr
Но вообще логично конечно, если дефолтный элемент может быть любым
Алексей
Определение дефолтности зависит от типа
Cheese
Default из библиотеки не привязан к задаче, потому не очень осмысленный
Cheese
если определить в своей программе свой Default, то в принципе ок
Cheese
и задокументировать семантику, конечно
eahqzsr
Default из библиотеки не привязан к задаче, потому не очень осмысленный
Тогда более специфичного класса чем Defaulted/Default быть не может
Алексей
Я, впрочем, считаю, что хейтерство Default слишком сильно. Если у типа есть есдинственное и осмысленное значение по умолчанию, то им вполне можно пользоваться
eahqzsr
Определение дефолтности зависит от типа
Точнее это хотел процитировать
eahqzsr
Кстати тогда логично Monoid сделать подклассом Default
eahqzsr
С определением emepty=def
Vladislav
Дефолтность всегда относительно операции, не может у типа быть дефолтного значения
Aleksei (astynax)
Vladislav
Тем временем предлагаю попробовать поддержку дефолтных параметров в https://hackage.haskell.org/package/named
eahqzsr
Дефолтность всегда относительно операции, не может у типа быть дефолтного значения
Нет, нулевость относительно операции, а дефолтность может быть любой "специальный" элемент
Vladislav
Так по какому принципу ты его выберешь?
eahqzsr
Произвольно. Но некоторый выбор более полезен чем другие
Vladislav
Чтобы этот выбор имел смысл, произвольность должна быть однородна между всеми типами
Vladislav
То есть принцип какой-то все равно нужен
eahqzsr
Например для FilePath это может быть "." или "/"
Anonymous
14, 18, 21(возраст) - примеры дефолтных значений
Vladislav
Так "." или "/"?
Dmitry
надо вклчить эту тему в число взрывоопасных
Dmitry
наряду с легалайзом, собаками и некоторыми другими
eahqzsr
RelativeFilePath "." AbsoluteFilePath "/"
Ilya
надо вклчить эту тему в число взрывоопасных
Это вопрос Шредингера. При попытке задать его достаточно строго, он исчезает
Vladislav
RelativeFilePath "." AbsoluteFilePath "/"
А вот для просто FilePath как? Я так хитрить тоже умею. Для Integer не определяем, а для Sum Integer пусть 0, для Product Integer пусть 1
Vladislav
Где-то у тебя там операции в голове рыскают, ты их просто назвать не можешь
Vladislav
Ну допустим сделали, не про String же речь, а то б уже давно вариант "" прозвучал
Ilya
Для всех типов
Vladislav
Я могу вот заметить, что "." для relative и "/" для absolute выполняют свойство def </> path = path
Vladislav
то есть операция явно </>
кана
неужели выше не было ясно указано, что нейтральный элемент не имеет к типу отношения, это свойство операции и только операции
кана
то есть дефолтный элемент и нейтральный из моноида - вообще разные вещи
Vladislav
так дефолтный ты сказал произвольно выбирать, а в моноиде нейтральный
кана
ну вот я про это и говорю же, тогда в чем твой смысл сделать Monoid <= Default, если у моноида именно НЕЙТРАЛЬНЫЙ, а у дефолта ДЕФОЛТНЫЙ
Vladislav
поэтому Default m => Monoid m вообще 0 смысла имеет
Vladislav
даже если допустить этот дурной Default
Vladislav
который вообще вырезать надо
eahqzsr
Назови его не дефолтным а специальным
кана
с точки зрения математики ты вообще не опишешь дефолт
кана
максимальная нижняя граница на предпорядке? А если нет предполярка
Vladislav
shadowjack: Нейтральный != дефолтный shadowjack, 1 minute later: С точки зрения математики одно и то же
eahqzsr
с точки зрения математики ты вообще не опишешь дефолт
Существует элемент default принадлежащий множеству Set. Всё.
кана
с точки зрения матемтики нет ничего плохого иметь множество опредений моноидов, это просто разные кортежи
кана
поэтому и default там никак не связан с моноидом
Ilya
Пардоньте, а какое дефолтное значение у функции? Для a -> a, и для a - > b
Vladislav
Существует элемент default принадлежащий множеству Set. Всё.
множеству Set принадлежат другие множества
Vladislav
(ниже по иерархии)
Vladislav
то есть если ты утверждаешь, что default это множество, то какие в нем тогда элементы?
Vladislav
Ы??
Ilya
Set это что за конструкция?
eahqzsr
Это имя
eahqzsr
Пусть будет не Set а S
eahqzsr
Ы??
Ты принадлежит и является подмножеством не путаешь?
Vladislav
Нет, я называю множеством Set элементы (объекты) категории Set
Vladislav
есть множество натуральных чисел, целых чисел, есть Set, и т.д.
Vladislav
в Agda так тип типов назван
eahqzsr
При чем тут Agda? Мы про математическую нотацию. Мне юникодом написать?
Vladislav
ну если пришел к хаскелистам, изволь называть переменные с маленькой буквы, потому что я действительно не так понял твою идею
Vladislav
твое утверждение "в любом множестве s есть дефолтный элемент a ∈ s" ну во-первых это неверно для пустого множества
Vladislav
Во-вторых весь разговор про то, как ты выбираешь этот элемент. Ты говоришь "произвольно, по полезности", тебе говорят, что полезность определяется операциями, которые ты используешь. Например, числа ты складываешь, поэтому 0 полезно. Еще умножаешь, поэтому 1 полезно. Файловые пути конкатенируешь, поэтому "." и "/" полезно.
Vladislav
Без операций вообще само множество бесполезным становится.
Vladislav
Так что ты всегда дефолтный элемент будешь выбирать по операции.
Ilya
Нет, я называю множеством Set элементы (объекты) категории Set
Лучше не назвать это множеством, сам знаешь
Vladislav
ну класс, множество
Ilya
Класс да
Vladislav
класс это множество_1