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

Ограничения могут быть связаны с параметром типа универсального. Ограничения объявляют элементы, которые должны поддерживаться любым конкретным типом, передаваемым этому параметру в конструкции универсального типа.
1 ответ

Можно ли ввести дополнительные переменные типа в ограничение суперкласса?

При работе с семействами типов часто удобно использовать ограничения равенства, чтобы избежать необходимости повторять имя какой-либо функции типа в сигнатуре: class Foo f where type BulkyAssociatedType f :: * foo :: BulkyAssociatedType f -> f ..…
2 ответа

Как работает List.max<'T>?

Из документов MSDN, подпись List.max является: List.max : 'T list -&gt; 'T (requires comparison) Мои вопросы: Как компилятор статически проверяет, что 'T поддерживает операцию сравнения? Является requires ключевое слово для указания ограничений типа…
2 ответа

Как я могу объединить два ограничения типа с логическим или в Haskell?

В Haskell нам дана возможность комбинировать ограничения на типы с логическим и. Рассмотрим следующее type And (a :: Constraint) b = (a, b) или сложнее class (a, b) =&gt; And a b instance (a, b) =&gt; And a b Я хочу знать, как логически или два огра…
21 апр '12 в 00:36
1 ответ

Ограничивающие типы в конструкторе GADT

У меня простой ADT data Concept a = Entity a | Role a | Relation a | Resource a | Sub (Concept a) Теперь я хочу создать GADT, используя этот ADT, который будет ограничивать сигнатуру типа его конструкторов. Этот код не будет работать, но я хочу сдел…
1 ответ

Нужен совет по дизайну ограничения типа в шаблоне класса в C++, v11

Я хотел бы поместить ограничение типа POD на параметр типа T шаблона класса A а затем получить другой шаблон класса B от удовлетворительного A, Кроме того, B должен иметь различную реализацию в соответствии с постоянством экземпляра A, Цель всего эт…
05 мар '13 в 04:51
2 ответа

Расширенные ограничения типов в Scala - логические операторы и неявные параметры

У меня есть следующий код, который работает хорошо. package com.andrew object ExperimentWithTypeConstraints { def union[T](t: T)(implicit c: (T =:= String)) = t match { case s: String =&gt; println(s"Some nice string: $s") } def main(args: Array[Str…
1 ответ

Как я могу ограничить T, чтобы быть беззнаковым интегралом?

Я пробовал следующее interface IUIntegral : IEquatable&lt;Byte&gt;, IEquatable&lt;UInt16&gt;, IEquatable&lt;UInt32&gt;, IEquatable&lt;UInt64&gt; { } class Counter&lt;T&gt; where T : IUIntegral { T _value; } С этим вызывающим кодом Counter&lt;UInt32&…
02 апр '12 в 02:18
1 ответ

Типы коллекций C# с ограничениями

Я пытаюсь сделать что-то в C#, что довольно просто в Java, используя групповые ограничения типов. Я попытался свести его только к коду Java, необходимому для иллюстрации проблемы (компилирует): public abstract class ParentClass { public abstract Som…
0 ответов

Добрый вывод не может сделать вывод, а Constraint Kinds ничего не делает

tl;dr Как мне получить Class иметь вид (* -&gt; *) -&gt; Constraint? У меня есть следующий код: {-# LANGUAGE ConstraintKinds, TypeFamilies, RankNTypes, MultiParamTypeClasses #-} class MonadTrans t where type Class t lift :: (Monad m) =&gt; m b -&gt;…
29 июл '14 в 00:25
1 ответ

Базовый тип общего параметра: "Неявного преобразования ссылок из B в A не существует"

[Serializable] public abstract class A { public A() { } } [Serializable] public class B : A { public B() : base() { } } В расширении: public static T NextRecord&lt;T&gt;(this SqlDataReader reader) where T : A, new() { // Do work } Я называю это расш…
02 июн '12 в 13:32
1 ответ

Типовые ограничения для полиморфных функций, таких как lift

Итак, у меня есть этот код {-# LANGUAGE GeneralizedNewtypeDeriving #-} import MonadA data A = A newtype MonadA a =&gt; MyStateT a b { runMyStateT :: StateT A a b } deriving (Functor, Applicative, Monad, MonadIO, MonadState A) instance MonadTrans MyS…
1 ответ

Использование собственного класса в качестве ограничения параметра типа в объявлении класса

У меня есть следующее объявление класса в Delphi XE8: TestClass = class; TestClass = class function test&lt;T: TestClass&gt;(supplier: TFunc&lt;T&gt;): T; // Compiler error end; Который выдает следующую ошибку компилятора: E2086 Type 'TestClass' is …
2 ответа

Типы ограничений по умолчанию игнорируются

Я столкнулся со странной проблемой при определении ограничения по умолчанию. Если ограничение является единицей, экземпляр по умолчанию не выбран. Во всех остальных случаях все работает как положено. {-# LANGUAGE TypeFamilies, ConstraintKinds #-} im…
30 апр '12 в 09:24
2 ответа

Как настроить ограничение, чтобы ограничить поле Char набором значений?

У меня сегодня мозг пердит. В SQL Server (в настоящее время используется 2008), как настроить поле char, чтобы принимать только определенную последовательность символов (примерно восемь букв с учетом регистра)? И мне нужно повторно использовать это …
13 май '11 в 13:55
1 ответ

Насколько действительно аппликативно применять, а не "комбинировать"?

Для распространения неопределенности Approximate типа, я хотел бы иметь экземпляры для Functor через Monad, Это, однако, не работает, потому что мне нужна структура векторного пространства для содержащихся типов, поэтому на самом деле это должны быт…
2 ответа

Есть ли способ объединить эти почти идентичные классы в один?

Продолжение этого вопроса: почему Nullable считается структурой, а не классом? У меня есть два класса, которые по существу поддерживают кортеж некоторого предоставленного пользователем значения с внутренним объектом. Когда тип предоставленного польз…
15 дек '13 в 17:37
1 ответ

Отсутствует встроенная буква ограничения CUDA PTX для 8-битных переменных, чтобы отключить кэш L1 для 8-битной переменной (bool)

ВСТУПЛЕНИЕ В этом вопросе мы можем узнать, как отключить кэш L1 для одной переменной. Вот принятый ответ: Как уже упоминалось выше, вы можете использовать встроенный PTX, вот пример: __device__ __inline__ double ld_gbl_cg(const double *addr) { doubl…
1 ответ

Приоритеты множественных ограничений для параметра универсального типа

В следующем примере у меня есть два ограничения, Foobar а также IFoobar&lt;T&gt;по типу T в общем классе FoobarList&lt;T&gt;, Но компилятор выдает ошибку: невозможно неявно преобразовать тип 'Foobar' в 'T'. Существует явное преобразование (вам не хв…
12 май '14 в 22:04
5 ответов

Написание метода расширения для типа T; Как я могу добавить ограничение типа для поля T?

Исходная ситуация: Я работаю с собственной платформой ( ArcGIS Engine от ESRI), которую я хочу расширить новыми функциональными возможностями. Я решил использовать методы расширения в C# для этого. Ниже показаны части API структуры, которые имеют от…
1 ответ

Reflection.Emit реализует общие ограничения метода интерфейса

Я пытаюсь динамически генерировать реализации интерфейсов, используя System.Reflection.Emit, Чтобы иметь возможность генерировать реализации обобщенных методов, я должен правильно применить все ограничения общих параметров метода интерфейса к методу…