История изменений
Исправление quasimoto, (текущая версия) :
Позволяет использовать контракты, в частности форсить требования на типы слотов.
В рантайме (там пример с «all args < 10» на это намекает)? Тогда это просто интеллектуальная форма делать assert (типа QuickCheck).
Статически многие вещи сделать всё равно невозможно. И остаются в рантайме проверки на тип указателя, не-равно-NULL, ограничение диапазона, обработка переполнения и деления на ноль.
Оно возможно, просто
Дикий матан на ... как бы намекает...
...
Как в терминах системы типов описать plist?
Мы же это уже обсудили. Как trait расширяющий базовый конкретный класс, то есть как конкретный тип + сторонний интерфейс (то что ты называл «протокол»).
Гораздо хуже, когда приходится бороться с системой типов для решения чего-нибудь типового
Вот я и говорю, что с ней не нужно бороться - её нужно использовать как инструмент.
те же гетерогенные списки или массивы в Haskell
В Haskell - да, а вот в Scala уже ни чо - через Any.
Исправление quasimoto, :
Позволяет использовать контракты, в частности форсить требования на типы слотов.
В рантайме (там пример с «all args < 10» на это намекает)? Тогда это просто интеллектуальная форма делать assert (типа QuickCheck).
Статически многие вещи сделать всё равно невозможно. И остаются в рантайме проверки на тип указателя, не-равно-NULL, ограничение диапазона, обработка переполнения и деления на ноль.
Оно возможно, просто
Дикий матан на ... как бы намекает...
...
Как в терминах системы типов описать plist?
Мы же это уже обсудили. Как trait расширяющий базовый конкретный класс, то есть как тип + интерфейс.
Гораздо хуже, когда приходится бороться с системой типов для решения чего-нибудь типового
Вот я и говорю, что с ней не нужно бороться - её нужно использовать как инструмент.
те же гетерогенные списки или массивы в Haskell
В Haskell - да, а вот в Scala уже ни чо - через Any.
Исходная версия quasimoto, :
Позволяет использовать контракты, в частности форсить требования на типы слотов.
В рантайме (там пример с «all args < 10» на это намекает)? Тогда это просто интеллектуальная форма делать assert.
Статически многие вещи сделать всё равно невозможно. И остаются в рантайме проверки на тип указателя, не-равно-NULL, ограничение диапазона, обработка переполнения и деления на ноль.
Оно возможно, просто
Дикий матан на ... как бы намекает...
...
Как в терминах системы типов описать plist?
Мы же это уже обсудили. Как trait расширяющий базовый конкретный класс, то есть как тип + интерфейс.
Гораздо хуже, когда приходится бороться с системой типов для решения чего-нибудь типового
Вот я и говорю, что с ней не нужно бороться - её нужно использовать как инструмент.
те же гетерогенные списки или массивы в Haskell
В Haskell - да, а вот в Scala уже ни чо - через Any.