Вопросы по теме '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 просмотров
schedule
25.09.2021
Swift Self как связанный тип, привязанный к протоколу
Я хочу, чтобы связанный тип был Self , но компилятор его не использует. Вот что я хочу получить для компиляции:
protocol Protocol {
// Error: Inheritance from non-protocol, non-class type 'Self'
associatedtype Type: Self
}
Вы можете...
1484 просмотров
schedule
25.09.2021
Scala: являются ли операторы типов с ограничениями обобщенного типа?
У меня есть следующая формулировка натуральных чисел Пеано на уровне типа: gist
с типом натурального числа, имеющим следующий интерфейс:
sealed trait NaturalNumber {
type MatchZero[T <: Up, F[_ <: NaturalNumber] <: Up, Up] <:...
65 просмотров
schedule
12.09.2021
Реализация метода по умолчанию, зависящего от типа и переменной в Haskell
Я пытаюсь определить реализации метода по умолчанию, но только если переменные типа класса являются производными от некоторых других классов.
Я попытался создать зависящие от типа экземпляры, используя => (правильно ли я его использую?), Но...
209 просмотров
schedule
24.09.2021
Когда следует или не следует использовать ограничения универсального типа?
У меня есть базовый класс:
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 просмотров
schedule
14.04.2022
Более короткое ограничение типа для 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 просмотров
schedule
02.06.2022
Есть ли способ определить параметры нового типа в ограничениях типа с помощью 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 просмотров
schedule
22.06.2022
Есть ли способ выразить один и тот же общий тип с разными сроками жизни?
Рассмотрим следующую (неполную) сигнатуру функции:
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 просмотров
schedule
31.03.2023
Как я могу ограничить функцию, чтобы она не принимала частично примененные функции
У меня есть функция сериализации, в которую я подаю данные, иногда я пропускаю аргумент функции генерации данных, и в результате я сериализую частично примененную функцию. Json.Net не заморачивается по этому поводу, а предоставляет хороший пустой...
99 просмотров
schedule
15.02.2023
Частично прикладное семейство типов
Это дополнительный вопрос к этому вопросу , где ответ, частично применяющий оператор типа (~) , допустимый.
Рассмотрим следующее (глупое) семейство типов:
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 просмотров
schedule
15.11.2022