@haskellru

Страница 1342 из 1551
Aleksey
17.07.2018
10:03:52
Хотя не, магма тоже опрецию имеет, просто не ассоциативную

Ilya
17.07.2018
10:03:52
по-моему @qnikst что-то такое спрашивал давно

и ему нашли тогда

Alexander
17.07.2018
10:04:41
не помню ответа

Google
Alexander
17.07.2018
10:04:48
но наверное был

shadowjack
17.07.2018
10:05:01
Aleksey
17.07.2018
10:05:01
Непонятно, как может быть нейтральный элемент, если нет операции?

Dmitry
17.07.2018
10:05:18
default

shadowjack
17.07.2018
10:05:29
Она может быть неассоциативна

Aleksey
17.07.2018
10:05:42
Тогда точно Магма

У магмы операция есть, но ассоциативность не гарантируется

kana
17.07.2018
10:06:07
так у магмы и нуля нет

а тут вроде только нуль нужен

Aleksey
17.07.2018
10:06:14
Магмоид

Нуль относительно чего, если операции нет?

kana
17.07.2018
10:06:48
тут нужен специальный класс под задачу и домен, который отдает НУЖНЫЙ дефолтный элемент под задачу

Aleksey
17.07.2018
10:07:03
Default :)

Google
kana
17.07.2018
10:07:03
потому в общем случае эта задача нерешаема, не понятно, дефолтный для чего элемент типа вот что дефотный для Int

shadowjack
17.07.2018
10:07:06
Что значит дефолтный

Aleksey
17.07.2018
10:07:32
Дефолтный /= identity element

Ilya
17.07.2018
10:07:43
так я и говорю, про дефолтный элемент сказал, а что ещё в классе есть?

Dmitry
17.07.2018
10:07:48
ладно. когда моноид я обычно считаю, что это mempty

Ilya
17.07.2018
10:07:49
кроме этого элемента?

Dmitry
17.07.2018
10:07:52
но бывет и не моноид

Pineapple
17.07.2018
10:08:05
Вот есть набор параметров для какого-нибудь численного алгоритма. И есть значения по умолчанию

Dmitry
17.07.2018
10:08:09
для инта это обычно ноль

Aleksey
17.07.2018
10:08:24
Или единица!

shadowjack
17.07.2018
10:08:34
mempty и mappend только в паре идут

Aleksey
17.07.2018
10:08:34
Смотря какая операция ;)

Dmitry
17.07.2018
10:08:35
когда?

Ilya
17.07.2018
10:08:37
или 42

Pineapple
17.07.2018
10:08:47
Обычно ноль. Почему его не сделали моноидом по сложению?

Max
17.07.2018
10:08:57
MAX_INT

kana
17.07.2018
10:08:58
еще раз, если нужен дефолтный элемент, то это уже задача в скоупе домена, поэтому и нужно делать свой класс и свои инстансы ровно под задачу

Aleksey
17.07.2018
10:08:59
Для произведения нейтральный элемент - единица

Pineapple
17.07.2018
10:09:09
Произведение нужно реже

kana
17.07.2018
10:09:20
Произведение нужно реже
такой себе аргумент

Google
Pineapple
17.07.2018
10:09:21
Можно и обернуть

Aleksey
17.07.2018
10:09:31
shadowjack
17.07.2018
10:09:44
Обычно ноль. Почему его не сделали моноидом по сложению?
Потому что у инта два очевидных моноида. Поэтому есть Sum и Product

Max
17.07.2018
10:09:51
Делаем два моноида?

Aleksey
17.07.2018
10:09:55
"Нужно реже" - плохой аргумент. Поэтому есть Sum и Product, да

Pineapple
17.07.2018
10:10:13
Обёртки страшно мешаются

Aleksey
17.07.2018
10:10:22
Не оборачивай

Ilya
17.07.2018
10:10:58
kana
17.07.2018
10:11:32
мешаются, вроде правильно

Pineapple
17.07.2018
10:11:48
Тогда нет моноида. Вот е меня есть идея API построенного вокруг мотоидов, но т.к. Int & whatever не моноиды — вероятно придётся дублировать для моноидов и для сложения

kana
17.07.2018
10:11:53
ну вообще лучше "мешают", но "мешаются" тоже есть в употреблении

Aleksey
17.07.2018
10:12:14
Они и должны "мешать" - выбираешь конкретный инстанс же

kana
17.07.2018
10:12:37
натуральное

shadowjack
17.07.2018
10:12:54
Давай, ещё лямду напиши

Alister
17.07.2018
10:13:33
почитал аргументацию сторонников формальной верификации

Pineapple
17.07.2018
10:13:37
Alister
17.07.2018
10:13:42
они еще более свихнутые чем хаскелисты

Aleksey
17.07.2018
10:13:59
Так я не хочу выбирать инстаснс
Два возможных. Нужно выбрать

Ilya
17.07.2018
10:14:15
ну вообще лучше "мешают", но "мешаются" тоже есть в употреблении
сообщение "edited", посмотри внимательно. Там до этого абракадабра была

Google
A64m
17.07.2018
10:15:25
Я тоже недоволен тем, что для чисел инстанса моноида (+,0) нету.

Pineapple
17.07.2018
10:15:37
Два возможных. Нужно выбрать
Один более полезный и намного более часто употребляемый, потому его следовало бы поставить по умолчанию, а для умножение обрнёте, не переломитесь

A64m
17.07.2018
10:16:11
делать более используемый инстанс для типа и менее используемый для обертки - нормальная практика см. инстансы для списка и ZipList например

и умножение явно менее полезный инстанс чем сложение

Ilya
17.07.2018
10:16:49
зачем вам моноид по сложению, если можно просто сделать sum?

для интов

A64m
17.07.2018
10:16:57
А дефолтный элемент без операции определить вполне можно - соотв. зануленной памяти.

Aleksey
17.07.2018
10:17:31
Вообще Sum использую столь же редко, что и Product, если честно

Admin
ERROR: S client not available

Pineapple
17.07.2018
10:17:37
Чтобы работать с моноидами полиморфно и иметь сложение как частный случай

A64m
17.07.2018
10:18:10
для интов
sum для контейнера с числами будет работать только а моноид может и с более сложной структурой, включающей в себя числа

dimiii
17.07.2018
10:18:20
Ну вообще требуемы тайпкласс больше напоминает Bounded a, непонятно откуда такая экзальтация насчет операций и моноидов

A64m
17.07.2018
10:18:57
вообще ни разу в жизни Product не использовал, для чего он вообще - факториалы писать?

shadowjack
17.07.2018
10:19:09
Ноль определён через операцию вообще-то

Ilya
17.07.2018
10:19:56
sum для контейнера с числами будет работать только а моноид может и с более сложной структурой, включающей в себя числа
и что так часто прям приходится засовывать список чисел в функцию с констрейнтом моноида?

A64m
17.07.2018
10:20:25
так я про то и говорю, что не только список будет работать

(хотя, если бы люди больше моноидные конфиги использовали, самым ходовым инстансом моноида для интов был бы First)

Leonid
17.07.2018
10:26:35
Last скорее

Aleksey
17.07.2018
10:28:29
Лучше бы First и Last были полугруппами :)

Google
Aleksey
17.07.2018
10:28:44
Но исторически сложились моноеды

Pineapple
17.07.2018
10:29:14
Полугруппы тоже есть

Leonid
17.07.2018
10:29:36
@astynax у вас там что, ghc 7.10?

Aleksey
17.07.2018
10:30:22
У First внутре Maybe, а если бы была только полугруппа без моноида, то не было бы

Leonid
17.07.2018
10:31:05
http://hackage.haskell.org/package/base-4.11.1.0/docs/Data-Semigroup.html#t:Last

newtype Last a = Last { getLast :: a }

Aleksey
17.07.2018
10:31:36
Хмм. И правда, отстал от жизни :)

Так норм

Так. Но в Data.Monoid то остался First с Maybe унутре!

Pineapple
17.07.2018
10:33:12
Так он тоже нужен

Aleksey
17.07.2018
10:33:32
Нет, не нужен

Pineapple
17.07.2018
10:33:39
Мне нужен

Иногда

Aleksey
17.07.2018
10:33:42
Option + First из Semigroup

Yuriy
17.07.2018
10:35:42
использовать Nothing вместо дефолтного элемента уже советовали?

Aleksey
17.07.2018
10:36:32
Это ты к кому вопрос обратил?

Yuriy
17.07.2018
10:37:06
ещё есть AsEmpty в линзах

Aleksey
17.07.2018
10:37:29
Псто тут несколько одновременных тредов

Yuriy
17.07.2018
10:38:08
к отвечающим на вопрос о классе для нейтрального элемента без моноида

Страница 1342 из 1551