Вопросы по теме '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 просмотров
schedule
16.10.2023
Как вы применяете ограничения функций в методах экземпляра в 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 просмотров
schedule
03.10.2022
Не могу вывести суперкласс
В следующем коде 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 просмотров
schedule
11.03.2024
Как я могу объединить это семейство закрытых типов с классом зависимых типов
Моя проблема
У меня есть следующее семейство типов, которое отделяет аргументы от функции:
type family
SeparateArgs
( a :: Type )
:: ( Type, [Type] )
where
SeparateArgs (a -> b) =
SndCons2 a (SeparateArgs b)...
98 просмотров
schedule
13.11.2022