
Alexander
12.09.2018
14:02:51
при чем тут логика
пожалуйста читай внимательнее

Yuriy
12.09.2018
14:03:22
кстати, ты *подумал*, что такое *is* в приводимых тобой определениях?

Alexander
12.09.2018
14:03:24
и не требуй от меня того, что я не писал

Google

Alexander
12.09.2018
14:03:43
подумал, дальше что?

Yuriy
12.09.2018
14:04:48

Alexander
12.09.2018
14:05:15
не то
ты почему-то требуешь от меня использовать только mempty

Yuriy
12.09.2018
14:06:08
при чем тут логика
логика — область изучает, что такое понятие, термин, определение, теория и т. д. у меня это в школе было

Alexander
12.09.2018
14:06:08
кароче мне надоело

Yuriy
12.09.2018
14:06:17

Alexander
12.09.2018
14:06:50
показать, что ты не умеешь читать, то что тебе пишут?
окей показал

Yuriy
12.09.2018
14:06:56

Alexander
12.09.2018
14:07:06
хорошо

Google

Alexander
12.09.2018
14:07:08
молодец

Yuriy
12.09.2018
14:07:47
c fmapDefault это работает, с другими классами нет

Alexander
12.09.2018
14:08:16
Functor, Applicative, Monad, Traverable, Foldable, Apply, Arrow, Category работает
но мы будем требовать выразить <> через mempty потому, что mappend будет забанен
не будем читать, что пишут
ПРЕКРАСНО!
будем говорить что-то неуместное про логину
*логику

Yuriy
12.09.2018
14:09:18
если для 8 классов работает, это не значит, что для всех работает. ты делаешь ложные обобщения

Alexander
12.09.2018
14:09:33
so you are

Yuriy
12.09.2018
14:09:36

Aleksey
12.09.2018
14:09:52
Ух и токсичные вы! Мне, дураку, объясните "констреинт подразумевает, что левая часть - необходимая и достаточная, чтобы получить правую" таки? Или "если в левой части есть класс, то оный можно инстанциировать, пользуя начинку класса в правой части"? А то я совсем запутался.

Alexander
12.09.2018
14:09:52
да
левая, точно не необходимая и достаточная

Yuriy
12.09.2018
14:10:13

Aleksey
12.09.2018
14:10:56
Ну вот я так и думал всегда...

Alexander
12.09.2018
14:11:18
такие ребята написали Ord a => Num a?

Yuriy
12.09.2018
14:12:02

Alexander
12.09.2018
14:12:10
нашей

Aleksey
12.09.2018
14:12:46
А зачем выражать Semigroup через Monoid, если у нас class Semigroup a => Monoid a? Констреинт же говорит "на момент инстанциирования Monoid инстанс Semigroup уже будет"

Google

Alexander
12.09.2018
14:13:04
class (Eq a, Show a) => Num a (see 6.4)
полное определение Monoid это (1,<>)

Aleksey
12.09.2018
14:14:20
Хмм. "У нас", это про хаскель?

Yuriy
12.09.2018
14:14:31
очевидно, не хаскель

Alexander
12.09.2018
14:14:42
вы что Haskell98 стандарт не читали
ещё учить что-то меня будут
токсики
class (Eq a, Show a) => Num a (see 6.4)
@astynax так вот, ты можешь так же записать что Monoid это (1, Semigroup)
тогда будешь чуть меньше методов определять

Aleksey
12.09.2018
14:15:53
Хмм. Ну да

Yuriy
12.09.2018
14:15:55
полное определение Monoid это (1,<>)
я понял, что ты имел в виду, но это полугруппу можно из моноида вытащить в математике, а констрэйнты пишутся в хаскеле. как ты на двух стульях сидишь?

Александр
12.09.2018
14:16:07
И тут врывается PureScript!
class (Semigroup m) <= Monoid m where

Alexander
12.09.2018
14:16:33

Yuriy
12.09.2018
14:16:51

Alexander
12.09.2018
14:16:55
я уточню, что меня достал такой стиль минуты 4 назад
приношу извинения если я общался в том же стиле
на всякий случай

Yuriy
12.09.2018
14:18:13
нет, от тебя стиля такого я не заметил. это я слишком злой

Google

Yuriy
12.09.2018
14:18:52
в каком стиле следует указывать на логические ошибки в приличном обществе?

Aleksey
12.09.2018
14:18:53
> ограничение может быть если и только если можно выразить левое через правое
А если в правом только часть левого используется? Как всё левое восстановить?

Alexander
12.09.2018
14:19:12
например?
вообще это значит, что-то менять надо
/me временно ушёл

Aleksey
12.09.2018
14:22:25
Скажем у меня есть некий класс FromTo { from, to }. А ещё есть class FromTo t => Encoder t where { encode = from }. Получить FromTo из Encoder с помощью только лишь encode я не смогу

Admin
ERROR: S client not available

Aleksey
12.09.2018
14:22:59
Получается, что у меня "беззаконный класс" и так делать нельзя?
Где про это чётко написано?

Yuriy
12.09.2018
14:23:33

Aleksey
12.09.2018
14:23:58
Констреинты, это же не сабклассинг какой-нить. Где нужно соблюдать принцип подстановки Лисков
При сабклассинге я бы ещё понял такое требование - потомок должен уметь всё то, что умеет предок, и мочь его заменить в любом месте

Alexander
12.09.2018
14:53:32
@astynax это значит что требование From скорее всего ненужное
как Ord для Num

Aleksey
12.09.2018
14:55:19
Хмм. Т.е. правильнее в default методах констреинты иметь для такого случая?
Это логично, если подумать

Pineapple
12.09.2018
14:55:43
Нет, когда мы можем выразить методы класса родителя через методы класса наследника это такой важный частный случай. fmap через методы монады не выражается если мы её определяем через return & join
Ну или совсем крайний случай, клас не вводящий методов: class Monoid m ⇒ CommutativeMonoid m

Alexander
12.09.2018
15:21:32
уговорили, наверное

Google

Terminator
12.09.2018
16:06:37
@Polya_KV будет жить. Поприветствуем!

ParkeT
12.09.2018
18:57:06
Можем ли мы определить аппликацию для своего типа?
Про это знаю <*>

Alexander
12.09.2018
19:00:14
что значит аппликацию?

ParkeT
12.09.2018
19:00:41
myTypeValue arg

Alexander
12.09.2018
19:02:02
что это значит?
ты хочешь имя MyType применить к нему Foo и что-то получить?
напиши типы вещей и получишь ответ
если у тебя myTypeValue :: MyType, а arg :: B, то myTypeValue a - не типизируется
чтобы применить B к чему-то у тебя должен быть тип B -> ...

ParkeT
12.09.2018
19:04:36
Ну, окей. Допустим
data F a b c = F ( a -> b -> c )
fValue :: F Int Int Int

Alexander
12.09.2018
19:05:11
что такое FValue?

ParkeT
12.09.2018
19:05:12
fValue = F (+)

Alexander
12.09.2018
19:05:18
ну
ты можешь сказать (\(F f) -> f 4) :: Int -> Int

ParkeT
12.09.2018
19:06:40
Могу, но я хочу так:
fValue 1 2 :: Int