kouzdra (kouzdra) wrote,
kouzdra
kouzdra

Из комментов:

http://kouzdra.livejournal.com/3025429.html?thread=101256469#t101256469
- Сейчас кто-то не проверяет boundaries и делитель на значение "нуль", в этом случае такие же кто-то не будут писать этих самых refined types с !=0 и malloc'и с проверкой длины массивов.

- А если скажем библиотечная функция требует в сигнатуре - хочешь не хочешь - а будешь писать.

В новой стандартной библиотеке (Std.Core) к OCaml народ от ненадежных (потому что всем лень проверять - и пишут, а потом на пустой список вылетают исключения) функций List.hd и List.tl взялись отучать очень простым способом - сделали hd
не
'a list -> 'a
а
'a list -> 'a option
(и tl аналогично)

А тут хочешь не хочешь - а проверять придется - либо что список непуст "до", либо что он был не пуст и потому результат Some 'a, а не None - "после"

PS: Boundaries при использовании функции с подобной сигнатурой не проверить просто не удастся - так или иначе но компилятор надо убедить уже во время компиляции что констрейнт соблюдается - иначе просто не откомпилится.

Самый тупой способ - явно проверить перед вызовом - но вообще-то говоря - это совершенно необязательно - в том и один из кайфов этого подхода, что эти свойства можно протаскивать автоматически очень далеко. А проверки вставлять только там где действительно появление свойства неочевидно.

Кстати тоже самое верно и в отношении язычка что по ссылке - там бы изврат с 'a option не нужен - просто в типе будет условие что список не пуст - а уж как именно убеждать в этом компилятор - вариантов весьма много (проверка - один из них)
Subscribe

  • В казани грят какая-то "трагедия"

    Уже даже не смешно - учителок постреляли - этих и вовсе не жалко - ну школоту тоже прибрали - тоже не жалко

  • "Вам Шура не завидно? Мне завидно"

    Ко Дню Победы, Илон Маск и компания SpaceX осуществили десятый повторный полет первой ступени. Ускоритель Falcon 9 Block 5 под номером B1051 поднялся…

  • "Иликой пабеды прозник"

    Щас subj положено плясать - хотя нынешняя россияния имеет к нему примерно столько же как и украиния. Эту войну выиграли совсем другие страны. И…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 9 comments