Вопросы по теме 'parametric-polymorphism'
Как работает List.max‹'T›?
Из документов MSDN подпись List.max :
List.max : 'T list -> 'T (requires comparison)
Мои вопросы:
Как компилятор статически проверяет, что 'T поддерживает операцию сравнения?
Является ли requires ключевым словом для указания...
301 просмотров
schedule
14.12.2023
Параметрический полиморфизм и полиморфизм подтипов F#
В чем разница (если она есть) между этими двумя подписями типа F#?
UseTheStream<'a when 'a :> Stream> : 'a -> unit
и
UseTheStream : (stream : Stream) -> unit
Означают ли они одно и то же в данном случае?
msdn...
1463 просмотров
schedule
04.05.2022
Выражение параметрического полиморфизма и функций высшего порядка в диаграмме классов UML
Можно ли выразить параметрический полиморфизм (общие типы в C#) или функции более высокого порядка в диаграммах классов UML?
Если да, то как это делается?
Если нет, существуют ли другие типы диаграмм, более подходящие для описания программных...
259 просмотров
schedule
09.05.2024
Scalacheck/Scalatest с параметрическими типами
Я хочу протестировать общий стек с помощью scalatest и scalacheck. Пока у меня это:
"Stack" should "pop the last value pushed" in {
check(doPushPop(element))
}
def doPushPop[T](element : T) : Boolean = {
val stack = new Stack[T]...
302 просмотров
schedule
25.10.2022
Почему `peek` с полиморфным Ptr возвращает GHC.Prim.Any при использовании с привязкой?
Используя привязки GNU Science Library низкого уровня Bindings.Gsl.RandomNumberGeneration , я запускаю в это странное поведение типа в GHCi, где привязка изменяет возвращаемый тип с peek на GHC.Prim.Any . Я пытаюсь понять, почему, так как я не...
121 просмотров
schedule
19.08.2023
Могу ли я в Scala динамически указать параметр типа параметрического типа?
Я пишу программу, в которой пользователь указывает путь к классу в командной строке. Я превращаю его в объект Class с помощью:
val clazz = Class.forName(args([0]))
У меня есть параметрический класс MyParametric[T] с одним параметром...
151 просмотров
schedule
31.05.2022
Являются ли типы высшего порядка * действительно * типами в Haskell? Или они просто обозначают коллекции * конкретных * типов и ничего более?
Парамаметрически полиморфные функции
Рассмотрим следующую функцию:
f :: a -> Int
f x = (1 :: Int)
Мы могли бы сказать, что тип f - это a -> Int , и, следовательно, f имеет "полиморфный" тип.
Что из следующего является...
3229 просмотров
schedule
02.03.2022
Могу ли я проверить, имеет ли данная сигнатура типа функции потенциальную реализацию?
В случае явных аннотаций типа Haskell проверяет, является ли выведенный тип хотя бы таким же полиморфным, как и его сигнатура, или, другими словами, является ли выведенный тип подтипом явного. Следовательно, следующие функции плохо типизированы:...
185 просмотров
schedule
24.11.2023
Заблуждение о классах типов и назначении переменных в Haskell
Очень плохо знаком с Haskell и пытаюсь понять, как взаимодействуют классы типов и переменные.
Первое, с чем я поиграл, было:
i :: a; i = 1
Я ожидал, что, поскольку я был напечатан как можно более обобщенно, я мог присвоить ему абсолютно...
147 просмотров
schedule
01.05.2024
Общее программирование на Прологе
Насколько мне известно, в Прологе нет встроенных механизмов для универсального программирования . Можно имитировать дженерики с помощью унификации, но для этого требуется проверка типов во время выполнения:
:- initialization(main).
:-...
140 просмотров
schedule
21.05.2022
Почему вы не можете обобщить параметрические классы?
Когда вы определяете параметрические классы, вы можете использовать только фиксированное количество параметров.
class Container<T> {
...
}
Однако, если вы хотите создать, скажем, карту с несколькими значениями. Вы должны...
44 просмотров
schedule
09.01.2023
Инструмент или метод разрешения параметров универсального типа Haskell
Давайте посмотрим на типы этих функций, например:
:t traverse
traverse
:: (Applicative f, Traversable t) => (a -> f b) -> t a -> f (t b)
:t id
id :: a -> a
У них нет конкретных типов, но есть параметры универсального типа :...
69 просмотров
schedule
25.05.2023
Когда и зачем использовать AsRef‹T› вместо &T
AsRef документация пишет
Используется для дешевого преобразования ссылки на ссылку.
Я понимаю часть reference-to-reference что означает cheap ? Надеюсь, это никак не связано со сложностью теоретической (большой о. и т.п.) дешевизны....
763 просмотров
schedule
24.03.2023
Как реализовать структуру, которая принимает трейт MyTrait‹A›?
Я определил черту следующим образом:
trait Readable<E> {
fn read_u8(&mut self) -> Result<u8, E>;
fn read_u16be(&mut self) -> Result<u16, E>;
}
Идея состоит в том, чтобы реализовать его с разными...
59 просмотров
schedule
12.12.2023
Как сделать конструкторы, которые создают значения по умолчанию для параметрически типизированных полей
Для типа с параметрически типизированными полями, такими как:
struct Point{T <: AbstractFloat}
x::T
y::T
end
Как создать внешний конструктор, который создает значения по умолчанию с нужными типами? Например, я хочу, чтобы Point()...
45 просмотров
schedule
08.06.2024