Вопросы по теме 'type-constraints'

Универсальные методы C #, параметры типа в ограничении конструктора new ()
Есть ли способ создать универсальный метод, который использует ограничение конструктора new() , чтобы требовать классы с конструкторами определенных типов? Например: У меня такой код: public T MyGenericMethod<T>(MyClass c) where T :...
7302 просмотров
schedule 09.11.2021

Равенство ограничений
В принципе, при заданном {-# LANGUAGE PolymorphicKinds, ConstraintKinds, TypeFamilies #-} (и более, если необходимо), работает ли оператор уровня типа (~) с выражениями уровня типа типа Constraint ? Я попытался найти ответ в Google, но безуспешно.
240 просмотров
schedule 10.09.2021

Извлечение ограничения из конъюнкции
Вот дерево булевых предикатов. data Pred a = Leaf (a -> Bool) | And (Pred a) (Pred a) | Or (Pred a) (Pred a) | Not (Pred a) eval :: Pred a -> a -> Bool eval (Leaf f) = f eval (l `And` r) = \x ->...
137 просмотров
schedule 02.12.2021

Экземпляр семейства типов Haskell с ограничениями типа
Я пытаюсь представить выражения с помощью семейств типов, но, похоже, не могу понять, как написать ограничения, которые мне нужны, и я начинаю чувствовать, что это просто невозможно. Вот мой код: class Evaluable c where type Return c :: *...
886 просмотров

Swift Self как связанный тип, привязанный к протоколу
Я хочу, чтобы связанный тип был Self , но компилятор его не использует. Вот что я хочу получить для компиляции: protocol Protocol { // Error: Inheritance from non-protocol, non-class type 'Self' associatedtype Type: Self } Вы можете...
1484 просмотров

Scala: являются ли операторы типов с ограничениями обобщенного типа?
У меня есть следующая формулировка натуральных чисел Пеано на уровне типа: gist с типом натурального числа, имеющим следующий интерфейс: sealed trait NaturalNumber { type MatchZero[T <: Up, F[_ <: NaturalNumber] <: Up, Up] <:...
65 просмотров

Реализация метода по умолчанию, зависящего от типа и переменной в Haskell
Я пытаюсь определить реализации метода по умолчанию, но только если переменные типа класса являются производными от некоторых других классов. Я попытался создать зависящие от типа экземпляры, используя => (правильно ли я его использую?), Но...
209 просмотров

Когда следует или не следует использовать ограничения универсального типа?
У меня есть базовый класс: public abstract class StuffBase { public abstract void DoSomething(); } И два производных класса public class Stuff1 : StuffBase { public void DoSomething() { Console.WriteLine("Stuff 1 did...
608 просмотров
schedule 27.02.2022

универсальный метод, получающий неоднозначную ошибку вызова
Я использую шаблон репозитория и пытаюсь создать общий метод, так как у меня есть несколько объектов, которые извлекаются из своих репозиториев таким же образом: Мои репозитории создаются следующим образом: public interface...
359 просмотров
schedule 14.03.2022

Как построить экземпляр Applicative с ограничениями (аналогично созданию экземпляров Monad с использованием ContT)
Этот вопрос касается создания правильного экземпляра Monad из чего-то, что является монадой, но только при определенных ограничениях, например Set . Хитрость заключается в том, чтобы обернуть его в ContT , что откладывает ограничения на...
244 просмотров

Более короткое ограничение типа для F#
Я практикуюсь с F #, и я думал о реализации функции сравнения с ограничением типа для F #. В С# это реализовано этим // in C# static int cmp<T>(T x, T y) where T: System.IComparable<T> { return x.CompareTo(y); } Однако в F#...
148 просмотров
schedule 27.04.2022

Указание ограничения конструктора для универсального параметра
У меня есть набор объектов, которые я передаю в качестве параметра для создания объектов другого типа (один за другим). Я делаю это во многих местах (в основном конвертирую объекты данных в бизнес-объекты). Я хочу написать для этого универсальный...
14533 просмотров

Есть ли способ определить параметры нового типа в ограничениях типа с помощью F#?
Кажется, я не могу найти способ сделать что-то вроде этого: type Instance<'Aggregate when 'Aggregate :> Aggregate.T<'State,'Event,'Failure>> = { ... Aggregate: 'Aggregate CurrentState: 'State ... } Обратите внимание,...
77 просмотров
schedule 15.06.2022

F# В параметре типа отсутствует ограничение
Я пытаюсь определить общий оператор сложения для класса-оболочки. Пока у меня есть это: (упрощено из фактического кода) type Wrap<'a> = | Wrap of 'a static member inline (+) (Wrap x, Wrap y) = Wrap (x + y) let inline addSelf x = x...
1113 просмотров

Есть ли способ выразить один и тот же общий тип с разными сроками жизни?
Рассмотрим следующую (неполную) сигнатуру функции: unsafe fn foo<'a, T: 'a>(func: impl FnOnce() -> T + 'a) -> ... Есть ли способ (небезопасно, конечно) transmute функцию ввода, чтобы она стала impl FnOnce() -> S + 'static ,...
124 просмотров
schedule 23.07.2022

Как я могу объединить два ограничения типа с логическим или в Haskell?
В Haskell нам дается возможность комбинировать ограничения на типы с логическим «и». Рассмотрим следующее type And (a :: Constraint) b = (a, b) или более сложно class (a, b) => And a b instance (a, b) => And a b Я хочу...
960 просмотров
schedule 13.09.2022

Ограничения параметров рефлексивного типа: X‹T›, где T : X‹T› ‒ любые более простые альтернативы?
Время от времени я усложняю простой интерфейс, добавляя к нему ограничение параметра самоссылающегося («рефлексивного») типа. Например, я мог бы превратить это: interface ICloneable { ICloneable Clone(); } class Sheep : ICloneable {...
1440 просмотров

Как я могу ограничить функцию, чтобы она не принимала частично примененные функции
У меня есть функция сериализации, в которую я подаю данные, иногда я пропускаю аргумент функции генерации данных, и в результате я сериализую частично примененную функцию. Json.Net не заморачивается по этому поводу, а предоставляет хороший пустой...
99 просмотров

Частично прикладное семейство типов
Это дополнительный вопрос к этому вопросу , где ответ, частично применяющий оператор типа (~) , допустимый. Рассмотрим следующее (глупое) семейство типов: type family SillyT a b :: Constraint data D (c :: * -> Constraint) where D ::...
559 просмотров
schedule 14.04.2023

Расширенные ограничения типов в Scala — логические операторы и неявные параметры
У меня есть следующий код, который работает хорошо. package com.andrew object ExperimentWithTypeConstraints { def union[T](t: T)(implicit c: (T =:= String)) = t match { case s: String => println(s"Some nice string: $s") } def...
243 просмотров