Вопросы по теме 'typeclass'

Ограничение класса типа другого вида
Я возился с классами общего типа для списков в Haskell. class HasEmpty a where empty :: a isEmpty :: a -> Bool class HasEmpty (l a) => List l where cons :: a -> l a -> l a uncons :: l a -> (a, l a) Чтобы дать вам...
324 просмотров
schedule 03.01.2024

Почему классы типов, а не просто сопоставление с образцом?
Это что-то вроде философского вопроса, но я надеюсь, что на него ответила официальная документация или «слово божье» (читай: SPJ). Есть ли конкретная причина, по которой комитет Haskell решил потребовать явные интерфейсы в форме классов типов, а не...
602 просмотров
schedule 18.02.2024

Избегайте повторяющихся экземпляров и дублирования кода [дубликаты]
Скажем, у меня есть класс типов Convertable : {-# LANGUAGE MultiParamTypeClasses, FlexibleInstances #-} class Convertable a b where convert :: a -> b Прежде всего, преобразование одного типа в тот же тип — это тождество: instance...
77 просмотров
schedule 22.11.2023

Как установить порядок между типами в Haskell
Мне нужно установить порядок между * -> * типами на основе того, что каждый член одного типа может быть представлен другим. Это гомоморфизм. Проблема в том, что я могу определить транзитивность отношения !<=! , но программа проверки типов...
348 просмотров
schedule 29.04.2024

Классы и массивы типов Scala [дубликаты]
Я часами гуглил о классах типа scala, но до сих пор не могу понять, как решить эту проблему: def mkArray[A:Ordering](size:Int):Array[A] = { Array.ofDim[A](size) } В основном моя проблема заключалась в том, что я не мог создать массив...
298 просмотров
schedule 08.05.2024

Почему мы должны явно указывать класс типов ClassTag
Теперь, когда scala перешла к исправлению стирания типа JVM с классом типов ClassTag , почему это необязательно, а не то, что компилятор всегда собирает сигнатуру типа для проверки во время выполнения. Наличие неявного параметризованного...
872 просмотров
schedule 18.10.2023

Использование класса типов для доступа к полям похожих типов данных в Haskell
Я работаю над некоторыми проблемами графов в Haskell. В середине своей работы я решил, что хочу иметь возможность представлять цвета ребер в типе данных графа. Итак, я начал с краев: края могли быть как окрашенными, так и неокрашенными. Вот краткий...
167 просмотров
schedule 10.11.2023

Все параметры типа зависят друг от друга в функциональных зависимостях
Допустим, у меня есть класс типов с n параметрами типа, и я хочу, чтобы любой из них однозначно определял все остальные. Достаточно ли сделать так, чтобы зависимости образовывали цикл, как в class Foo a b c | a -> b, b -> c, c -> a...
133 просмотров

Как вы применяете ограничения функций в методах экземпляра в Haskell?
Я учусь использовать классы типов в Haskell. Рассмотрим следующую реализацию класса типов T с функцией класса с ограничениями типа f . class T t where f :: (Eq u) => t -> u data T_Impl = T_Impl_Bool Bool | T_Impl_Int Int |...
2028 просмотров
schedule 25.04.2024

Как работает равенство для числовых типов?
Я вижу, что Haskell позволяет сравнивать различные числовые типы: *Main> :t 3 3 :: Num t => t *Main> :t 3.0 3.0 :: Fractional t => t *Main> 3 == 3.0 True Где исходный код экземпляра Eq для числовых типов? Если я создам новый...
92 просмотров
schedule 04.07.2022

Указание, что тип может существовать только в одном классе, если он уже существует в других классах Haskell.
Я работаю над проблемой, связанной с унификацией, с определяемым пользователем типом Subst a. Проблема гласит: «Определить класс типов Unified, указывающий, что функция unify::a -> a -> Maybe (Subst a) должна быть определена для любого типа a...
83 просмотров
schedule 21.03.2024

Заархивируйте универсальный HList со статическим Nat HList
Я ищу способ объединить два HList. Первый генерируется из case-класса, преобразованного в его универсальное представление, а второй определяется вручную как HList Nat. В результате я ожидаю кортеж (или HList с двумя членами) с одним полем из...
99 просмотров
schedule 15.08.2022

Переполнение стека в классе типов с неявным преобразованием
Я сделал общий DynamoFormat для Scanamo , который поместил бы любой объект, который имеет Encoder и Decoder Circe , определенные в базу данных, как строку Json. import com.gu.scanamo.DynamoFormat import io.circe.parser.parse import...
257 просмотров

Не могу вывести суперкласс
В следующем коде GHC не может найти экземпляр Functor в определении экземпляра Monoidal . Почему GHC не делает вывод, что данное ограничение Applicative выполнено, то Functor должно где-то уже быть? (Есть ли название для этой...
244 просмотров
schedule 19.12.2023

Равенство в определениях (разрешимое равенство? Например, заменить элементы в списке)
Я пытаюсь изучить lean и хочу определить функцию замены, которая принимает два элемента x и y и заменяет каждое вхождение x с y в заданном списке. Я попытался определить это так: def replace {α : Type}: α -> α -> list α ->...
125 просмотров
schedule 11.10.2022

Как работает оператор return в Haskell?
Рассмотрим эти функции f1 :: Maybe Int f1 = return 1 f2 :: [Int] f2 = return 1 Оба имеют один и тот же оператор return 1 . Но результаты разные. f1 дает значение Just 1 , а f2 дает значение [1] Похоже, что Haskell вызывает две...
8962 просмотров
schedule 07.01.2024

Как использовать классы типов в функциях Haskell?
В настоящее время я пытаюсь научить себя Haskell с помощью Learn You A Haskell, и поэтому, чтобы проверить себя, я пытаюсь написать функцию, которая принимает список чисел и возвращает среднее значение. listlen :: [a] -> Int listlen [] = 0...
102 просмотров
schedule 07.07.2022

Как справиться с ограничением класса типов в функции-члене класса
GHCI жалуется на типы k и a внутри (k * a, k * b) . Я предполагаю, что он не знает, что k является Num , но я не знаю, как это указать. module Point where data Point x y = Point (x, y) class Vector v where add :: v -> v -> v...
75 просмотров
schedule 15.05.2024

Почему эта реализация недействительна?
Допустим, у меня есть следующая подпись типа: someFunction :: (Eq a, Eq b) => a -> b С реализацией: someFunction x = (2 :: Int) (Не заглядывайте слишком далеко, это просто пример). Мое понимание подписи заключается в том,...
94 просмотров

Как я могу объединить это семейство закрытых типов с классом зависимых типов
Моя проблема У меня есть следующее семейство типов, которое отделяет аргументы от функции: type family SeparateArgs ( a :: Type ) :: ( Type, [Type] ) where SeparateArgs (a -> b) = SndCons2 a (SeparateArgs b)...
98 просмотров