LINUX.ORG.RU

История изменений

Исправление 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.