LINUX.ORG.RU
Ответ на: комментарий от Nervous

Функция, ожидающая плоскую фигуру, с радостью примет и треугольник, и равнобедренный треугольник

Функция, ожидающая треугольник, поломается, если получит равнобедренный треугольник.

monk ★★★★★
()
Ответ на: комментарий от monk

Функция, ожидающая треугольник, поломается, если получит равнобедренный треугольник.

Зависит от реализации, наверное.

Nervous ★★★★★
()
Ответ на: комментарий от monk

У тебя они в вакууме, видимо, бегают. В реальности разница имеет значение.

Класс «сессия на беговой дорожке», инициализируем её бегуном индийским слоном, получаем какой-нибудь ад.

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 2)
Ответ на: комментарий от WitcherGeralt

Класс «сессия на беговой дорожке», инициализируем её бегуном индийским слоном, получаем какой-нибудь ад.

Надо габариты и массу проверять же, кроме соответствия интерфейсу %)

P.S. Ахтунг, трекер разворотило!

Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 2)
Ответ на: комментарий от Nervous

И скорость бега ещё. Например, скорость бегуна черепахи будет ниже минимальной скорости дорожки. В итоге ты вместо нормальной системы типов получаешь сплошные проверки в рантайме.

WitcherGeralt ★★
()
Последнее исправление: WitcherGeralt (всего исправлений: 1)
Ответ на: комментарий от WitcherGeralt

В итоге ты вместо нормальной системы типов получаешь сплошные проверки в рантайме.

Так все равно бОльшую часть ограничений придется проверять в рантайме. Возраст — целое число, окей. Это система типов может. А что это число неотрицательное? И больше 18?

Возможно, иногда проще добавить один предикат, где он реально нужен, чем принудительно и повсеместно ублажать систему типов? %)

Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 1)
Ответ на: комментарий от Nervous

А что это число неотрицательное?

uint?

И больше 18?

Дорожка 18+? Типа как с ослом и морковкой, только морковка сзади, не будешь успевать, получишь мотивации.

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

морковка сзади, не будешь успевать, получишь мотивации.

А потом будем удивляться, что у нас зайцы задом наперед бегают.

Nervous ★★★★★
()
Ответ на: комментарий от WitcherGeralt

Не та морковка

Carrot implements Motivator же, ну.

Nervous ★★★★★
()
Ответ на: комментарий от Nervous

Так все равно бОльшую часть ограничений придется проверять в рантайме. Возраст — целое число, окей. Это система типов может. А что это число неотрицательное? И больше 18?

Все ограничения придётся проверять в рантайме, потому что в рантайме имеем дело с сырыми байтами. А вот дальше система типов может заставить нас проверить, что это число целое, неотрицательное, больше 18, меньше 65, и отлупить по рукам, если этих проверок не было. Зато когда в сигнатуре функции написано «Целое от 18 до 65», можно быть уверенным, что это так.

Laz ★★★★★
()
Ответ на: комментарий от Laz

дальше система типов может заставить нас проверить

Ну я статическую имел в виду. Чтобы все на этапе компиляции проверялось, как тут любят.

Nervous ★★★★★
()
Ответ на: комментарий от Nervous

Так я тоже про нёе. Если вы не проверите, что число лежит в указанном диапазоне, то программа не скомпилируется.

Laz ★★★★★
()
Ответ на: комментарий от Laz

Если вы не проверите, что число лежит в указанном диапазоне, то программа не скомпилируется.

Круто. А в жабе, к примеру, так можно?

Nervous ★★★★★
()
Ответ на: комментарий от Nervous

А в жабе, к примеру, так можно?

В самой жаве нет, а вот в скале, целящейся в jvm, что-то есть, так что ынтырпрайз уже может получать профит от надёжного кода. А так, гуглить по словам dependent types, рано или поздно оно докатится и до массового потребителя.

Laz ★★★★★
()
Ответ на: комментарий от Laz

dependent types, рано или поздно оно докатится и до массового потребителя

Почитал, выглядит неплохо, но

  • сложна
  • не всегда работает

Для учоных, наверное, норм %)

Nervous ★★★★★
()
Ответ на: комментарий от Nervous

Почитал, выглядит неплохо, но

сложна

Да, поэтому ждём, когда ботаники доведут это всё до юзабельного состояния.

не всегда работает

Сама логика работает всегда, а вот доказать, что написанный код действительно работает, получается не всегда. Поэтому, например, в реализации красно-чёрных деревьев на idris до сих пор нет операции удаления.

Laz ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.