Описание тега type-systems

Системы типов накладывают ограничения на то, какие программы могут быть написаны, предоставляя синтаксический метод для работы с этими ограничениями.
1 ответ

Границы параметра типа Scala

У меня возникли проблемы с пониманием системы границ типов в Scala. То, что я пытаюсь сделать, - это создать класс-держатель, содержащий элементы типа T, которые могут перебирать элементы типа A. До сих пор у меня было следующее: class HasIterable[T…
15 июл '11 в 21:33
2 ответа

Конъюнктивные типы в C#

Преимущество универсальных классов в C# заключается в том, что на типы можно накладывать ограничения, поэтому принимаются только те типы, которые удовлетворяют нескольким ограничениям. Например: public class Foo<T> where T : Bar, IBaz, IFoobar…
30 окт '13 в 14:50
2 ответа

Получить имя абстрактного типа

Я пытаюсь создать черту, которая будет предоставлять имя абстрактного типа, который добавляется в подкласс: trait T { type T def myClassOf[T:ClassTag] = implicitly[ClassTag[T]].runtimeClass def getType = { myClassOf[T].getSimpleName } } class TT ext…
19 апр '17 в 17:58
3 ответа

Подход хорошего дизайна для создания библиотеки геометрии (относительно использования объединения или нет)?

Я делаю библиотеку геометрии, и я запутался, какой должен быть тип возврата функции, которая вычисляет пересечение сегмента с другим сегментом. Возвращаемое значение иногда будет точкой, а иногда сегментом (случай перекрытия), а иногда пустым наборо…
1 ответ

Какие размеры в Агде?

Какие размеры в Агде? Я пытался прочитать статью о MiniAgda, но не смог продолжить из-за следующих моментов: Почему типы данных являются общими для их размера? Насколько я знаю, размер - это глубина дерева индукции. Почему типы данных ковариантны от…
02 ноя '16 в 15:27
4 ответа

Scala - поиск членов последовательности, которые имеют дочерний тип определенного типа

У меня следующая ситуация: Класс Java lib: class LibClass { ArrayList<LibClass> children; } Scala код моей программы: abstract class MyClass extends LibClass { def boom { } def boomMyClassInstances // ??? } class Lala extends MyClass class Hoh…
02 июл '12 в 11:34
2 ответа

Использование "типа" для синонима типа приводит к утечке памяти?

У меня есть следующий код в качестве горячей петли. {-# LANGUAGE BangPatterns #-} module Simulation.Simulator where import Simulation.Common () import System.Random (RandomGen) import Control.Monad.Random (Rand) simulateUntil :: (RandomGen g) => …
14 апр '14 в 15:41
0 ответов

О расхождениях позиций в Scala

Я читаю книгу "Программирование в Scala", и обнаружил, что дисперсионные позиции трудно понять. trait Cat[-T, +U] { def meow[W]() } Это говорит о позиции W отрицательно. Что значит "отрицательный"? Что я могу сделать и что не могу сделать с типом W?
29 апр '14 в 07:24
2 ответа

Как подсказывать типы при компиляции с llvm-gcc?

В некотором C-коде я определяю простой статический массив как аргумент функции, скажем: void foo(float color[3]); Когда я собираю это с llvm-gcc, он производит следующий вывод на ассемблере LLVM: define void @foo(float* %n1) nounwind ssp { Есть ли с…
27 сен '11 в 05:19
2 ответа

Конкретные (кодовые) примеры преимуществ динамических языков программирования

В настоящее время я работаю над проектом управляемого эксперимента, в котором я надеюсь измерить преимущество динамически типизированных языков программирования по сравнению со статически типизированными. Я не ищу другого "который лучше"- спорьте зд…
3 ответа

Как единицы проходят через матричные операции?

Кажется, что есть много полезных приложений для математической математики, где не все записи в данной матрице имеют одинаковые единицы. Я хочу изучить системы типов, которые могли бы отслеживать эти единицы и гарантировать, что мы не совершаем ошибо…
4 ответа

Система типов и логическое программирование на Haskell - как портировать программы Prolog на уровень типов

Я пытаюсь понять связь между языком логического программирования (Пролог в моем случае) и системой типов Хаскелла. Я знаю, что оба используют унификацию и переменные для поиска значений (или типов в системе типов Хаскелла) в зависимости от отношений…
16 дек '12 в 08:01
2 ответа

Каковы пределы вывода типа?

Каковы пределы вывода типа? Какие системы типов не имеют общего алгоритма вывода?
2 ответа

Почему следующий код Java приводит к ошибке компиляции

В настоящее время я работаю над тем, чтобы мой код содержал больше дженериков. Я столкнулся с ошибкой компиляции, которая выглядит довольно сложной, но которую я смог уменьшить до эквивалентной ошибки в следующем коде: List<List<?>> a = …
05 фев '12 в 19:36
4 ответа

Почему бы не быть зависимым типом?

Я видел несколько источников, повторяющих мнение, что "Haskell постепенно становится типизированным языком". Предполагается, что с появлением все большего количества языковых расширений Haskell движется в этом общем направлении, но пока не существуе…
18 окт '12 в 18:48
3 ответа

Является ли система типа C# надежной и разрешимой?

Я знаю, что система типов Java неэффективна (ей не удается набрать контрольные конструкции, которые семантически допустимы) и неразрешима (ей не удается проверить тип какой-либо конструкции). Например, если вы скопируете / вставите следующий фрагмен…
29 май '14 в 17:20
2 ответа

Проблема компиляции в Scala с F-ограниченными типами и экзистенциальными типами

Я использую F-ограниченный тип для того, чтобы иметь возможность вернуть текущий тип trait Board[T <: Board[T]] { def updated : T } И я пытаюсь написать универсальный вспомогательный метод, который использует его. Вопрос в следующем: почему следу…
4 ответа

Как обращаться с коллекцией Foo<T>, где T может отличаться для каждого элемента?

Описание проблемы Я пытаюсь сохранить коллекцию универсальных Foo&lt;T&gt; элементы, где T может отличаться для каждого элемента. У меня также есть такие функции, как DoSomething&lt;T&gt;(Foo&lt;T&gt;) которые могут принять Foo&lt;T&gt; любой T, Пох…
14 дек '12 в 12:43
2 ответа

Существуют ли языки с динамической типизацией, но не допускающие слабой типизации?

Например, добавление (ранее необъявленного) int и строки в псевдокоде: x = 1; y = "2"; x + y = z; Я видел строго типизированные языки, которые не позволяют добавлять два типа, но они также статически типизированы, поэтому невозможно создать ситуацию…
26 мар '10 в 03:24
1 ответ

Два типа, разделенные двоеточием в Scala

Я нашел очень интересную переменную типа. def f[A: B, C](a: A) class B Вы можете увидеть это как A: B, Этот тип разделен двоеточием. Но что это значит? Это какой-то синоним? И где я могу это использовать?
17 окт '15 в 16:39