Size: a a a

2020 December 05

AV

Alexander Vershilov in Haskell
newtype NonZeroInt = NonZeroInt Int
toInt (NonZeroInt n) | n < 0 = n
 | otherwise = n +1
источник

к

кана in Haskell
врять можно, так же можно и не верить, но не верить - это твоя проблема
источник

AV

Alexander Vershilov in Haskell
это гарантирует
источник

AV

Alexander Vershilov in Haskell
кана
врять можно, так же можно и не верить, но не верить - это твоя проблема
Я не понимаю почему ты говоришь что newtype не гарантирует
источник

AV

Alexander Vershilov in Haskell
Почему ты в одном случае говоришь, что это гарантия, а в другм нет
источник

AV

Alexander Vershilov in Haskell
Это эгоизм и вообще нечестно
источник

YR

Yuki Rito in Haskell
я понимаю что он имеет ввиду: представь что ты написал этот сет с ошибкой, и у тебя могут быть 2 одинаковых элемента. Типы не могут поймать в compile time этот факт. И под словом Set скрывается уже нечто иное
источник

AV

Alexander Vershilov in Haskell
Alexander Vershilov
newtype NonZeroInt = NonZeroInt Int
toInt (NonZeroInt n) | n < 0 = n
 | otherwise = n +1
Тут 0 никак нельзя представить в принципе
источник

к

кана in Haskell
потому что сам по себе ньютайп это просто ньютайп, туда модно что угодно положить

конкретные функции которые нам дают какие-то гарантии уже гарантируют (буквально, дают гарантии)
источник

AV

Alexander Vershilov in Haskell
кана
потому что сам по себе ньютайп это просто ньютайп, туда модно что угодно положить

конкретные функции которые нам дают какие-то гарантии уже гарантируют (буквально, дают гарантии)
Ещё раз понятно, что newtype идёт с определениями и гарантиями
источник

AV

Alexander Vershilov in Haskell
Твой newtype и твой set ровно такие
источник

YR

Yuki Rito in Haskell
кстати, а функции как дают? Компилятор же должен доказать их свойства. Иначе это ассюминг
источник

к

кана in Haskell
если сделать

newtype Set a = Set [a]
insert :: ...
member :: ...
toList :: Set a -> [a]

это будет так же гарантировать как и Set из контейнеров
источник

AV

Alexander Vershilov in Haskell
Замечательно!
источник

к

кана in Haskell
даже без ньютайпа, но с ньютайпом будет проще читать
источник

к

кана in Haskell
а вот просто лист это просто лист
источник

AV

Alexander Vershilov in Haskell
Ну понятно, что если ты хочешь их не путать, то ты так делаешь
источник

AV

Alexander Vershilov in Haskell
Не надо предполагать, что будет просто чистый список использоваться
источник

к

кана in Haskell
Yuki Rito
кстати, а функции как дают? Компилятор же должен доказать их свойства. Иначе это ассюминг
функции дают аксиоматически, мы или верим что либа корректная и верим их гарантиям, или не верим
источник

к

кана in Haskell
гарантия /= пруф
источник