Size: a a a

2020 May 27

LO

Leonid 🦇 Onokhov in haskell_blah
Yan Shkurinskiy
Я думал в IO всё писать х)
протекает
источник

YS

Yan Shkurinskiy in haskell_blah
Leonid 🦇 Onokhov
протекает
заткнуть!
источник

к

кана in haskell_blah
Yan Shkurinskiy
Например?
я не знаю, но сейчас это выглядит практически как

type Increment = Int -> Int
increment :: Increment
increment x = x + 1
источник

YS

Yan Shkurinskiy in haskell_blah
кана
я не знаю, но сейчас это выглядит практически как

type Increment = Int -> Int
increment :: Increment
increment x = x + 1
Тайпклассы же полиморфны по типам, и там не 1 к 1 .-.
источник

YS

Yan Shkurinskiy in haskell_blah
которые CanFind/Update/Create
источник

к

кана in haskell_blah
да, там не 1к1, но из-за того что тип назван так же как функция, выглядит как 1к1
источник

к

кана in haskell_blah
type ChangeWorkerStatusCapabilities
changeWorkerStatus
источник

YS

Yan Shkurinskiy in haskell_blah
Доводы твои я понял, но там тогда либо править в двух местах, либо править в n местах, если вместо алиаса писать как есть все 5 констрейнтов .-.
источник

YS

Yan Shkurinskiy in haskell_blah
Ну либо другой нейминг/другие тайпклассы
источник

LO

Leonid 🦇 Onokhov in haskell_blah
слишком гранулярные констрейнты
источник

к

кана in haskell_blah
да, другой нейминг поможет, он как минимум зафорсит не добавлять лишние констрейнты, которые не будут соответствовать неймингу
источник

к

кана in haskell_blah
если например changeWorkerStatus нужен будет еще Show status условно, это это должно быть в changeWorkerStatus, а не в ChangeWorkerStatusCaps, хоть сейчас выглядит так будто именно в алиасе
источник

YS

Yan Shkurinskiy in haskell_blah
Немного не понял про "лишние констрейнты"
источник

YS

Yan Shkurinskiy in haskell_blah
Leonid 🦇 Onokhov
слишком гранулярные констрейнты
есть такое( я пока хз, насколько это неправильно
источник

YS

Yan Shkurinskiy in haskell_blah
кана
если например changeWorkerStatus нужен будет еще Show status условно, это это должно быть в changeWorkerStatus, а не в ChangeWorkerStatusCaps, хоть сейчас выглядит так будто именно в алиасе
снова не понял х(
источник

YS

Yan Shkurinskiy in haskell_blah
Ты говоришь, что неправильно добавлять констрейнты в алиас?
источник

YS

Yan Shkurinskiy in haskell_blah
Если ещё нужны будут
источник

YS

Yan Shkurinskiy in haskell_blah
(если что - я как бы докапываюсь или яро отстаиваю свою точку зрения, я действительно не понял)
источник

к

кана in haskell_blah
1. да, я считаю что выносить констрейнты в алиас не нужно
2. но если выносить, то называть алиас не по имени функции, потому что иначе из-за нейминга между алиасом и функцией соответствие один к одному, и тогда не ясно зачем этот алиас, если можно прям в функции и написать констрейнты
3. если добавиться некая функция f, которая будет иметь те же констрейнты, то скорее всего их лучше скопировать, потому что совпание алиасов может быть случайно
4. сейчас алиас выглядит не как констейнты, нужные для обновления статуса, а как ВСЕ констрейнты, нужные для функции апдейта, из-за нейминга
5. если эта функция f будет использовать этот алиас, то если вдруг changeWorkerStatus вдруг затребует лишний констрейнт (например Show), то из-за нейминга будет мысль, что добавлять этот констрейнт нужно в алиас.
6. но для f этот Show будет не нужен
7. значит очевидно Show констрейнт должен быть в самой функции changeWorker, а не в алиасе
8. значит и алиас нужно назвать иначе, чтобы не было ложного соответствия
источник

AV

Alexander Vershilov in haskell_blah
> 2. но если выносить, то называть алиас не по имени функции, потому что иначе из-за нейминга между алиасом и функцией соответствие один к одному, и тогда не ясно зачем этот алиас, если можно прям в функции и написать констрейнты

специальный полиморфизм же, как ты напишешь функцию?
источник