Вопросы по теме 'typeclass'
Определение, казалось бы, простого экземпляра Foldable
Как будет выглядеть экземпляр Foldable для этого типа данных?
data X t = X t [X t]
Я пробовал это:
instance Foldable X where
foldMap f (X x xs) = f x `mappend` foldMap f xs
Но получил эту ошибку:
Occurs check: cannot...
328 просмотров
schedule
27.04.2024
Как я могу устранить эту ошибку переменной неоднозначного типа?
Следующий код компилируется отлично, но я не могу использовать свою функцию:
КОД:
g :: (Fractional b, Integral b) => Int -> b -> b
g 1 x = x / (g 2 x + 1)
g 100 x = 2401*x/100
g n x = ((map (\z -> (ceiling z)^2)...
729 просмотров
schedule
22.12.2023
Как сопоставить жесткие типы в экземпляре класса типов?
Я подумал, что попробую смоделировать численное интегрирование векторных величин разной размерности, и решил, что классы типов — это то, что нужно. Мне нужно было что-то, чтобы определить разницу между двумя значениями и масштабировать ее с помощью...
164 просмотров
schedule
09.04.2024
Haskell: ограничения по умолчанию для ввода
Рассмотрим этот пример:
applyKTimes :: Integral i => i -> (a -> a) -> a -> a
applyKTimes 0 _ x = x
applyKTimes k f x = applyKTimes (k-1) f (f x)
applyThrice :: (a -> a) -> a -> a
applyThrice = applyKTimes 3
3 в...
3228 просмотров
schedule
07.05.2023
Слияние/объединение двух классов в один в Haskell
У меня есть два непересекающихся набора типов, и я хочу создать другой набор, объединяющий эти два. Пример кода:
class A a
class B b
class AB ab
instance A a => AB a
instance B b => AB b
GHC 6.12.3 не позволяет объявить это сообщением...
470 просмотров
schedule
03.11.2023
Есть ли в Haskell какой-либо способ выразить, что тип должен быть экземпляром класса типов более чем одним способом?
(Заранее извините, если вопрос глупый или очевидный - у меня нет большого опыта работы с Haskell).
Есть ли способ выразить, что тип должен быть экземпляром класса типов более чем одним способом? Лучше всего это проиллюстрировано на примере...
838 просмотров
schedule
23.04.2022
Вырожденное объявление экземпляра класса типов с использованием постоянного значения
Я сократил все до самого необходимого, так что терпите меня, если приведенный ниже пример кода является надуманным. Допустим, у нас есть:
class Foo a where
foo :: a
data Type a = Type a
instance (Foo a) => Foo (Type a) where
foo =...
239 просмотров
schedule
09.09.2023
Добавление ограничений типа в контекст объявлений экземпляров в Haskell
Я пытаюсь представить взвешенные ребра. В конечном итоге я хочу, чтобы OutE был экземпляром Eq и Ord с ограничением, что etype является экземпляром Eq и Ord. Предположим, у меня есть следующий файл как temp.hs:
data (Ord etype)=> OutE vtype...
6167 просмотров
schedule
27.08.2023
Haskell создает дополнительные экземпляры для импортированных типов данных
Я относительно новичок в Haskell. Пишу клон карточной игры uno и хочу красиво раскрасить карту. Я делаю
import System.Console.ANSI
который обеспечивает
data Color = Black
| Red
| Green
| Yellow...
367 просмотров
schedule
09.03.2023
Иерархия классов типов Haskell в Java
Я пишу библиотеку с интерфейсами Java, напоминающими классы типов Haskell, и абстрактными классами, реализующими все "производные" методы (например, Monad.join можно записать с использованием >>= и return ). Это моя запланированная...
743 просмотров
schedule
29.08.2023
GHC выбирает разные экземпляры для одного и того же выражения?
Я хочу реализовать стрелку с arr -функцией-членом, показывающей различное поведение для аргументов функции с разными типами, например, arr (\x -> (x,x)) должно вести себя иначе, чем arr id ...
Вот код:
{-# LANGUAGE Arrows,...
217 просмотров
schedule
11.03.2023
Будет ли иметь смысл класс типов между категорией и стрелкой?
Часто у вас есть что-то вроде Applicative без pure или что-то вроде Monad , но без return . Пакет semigroupoid охватывает эти случаи с Apply и Bind . Теперь я нахожусь в похожей ситуации с Arrow , где я не могу определить осмысленную...
1027 просмотров
schedule
07.10.2023
В чем разница между типом и типом данных в Haskell?
Я немного не понимаю разницы между типом и типом данных в Haskell.
Из литературы, с которой я столкнулся, у меня сложилось впечатление, что это разные понятия.
19362 просмотров
schedule
10.05.2022
Переменные неоднозначного типа для зависимых ограничений класса
Я пишу новую систему аутентификации для веб-фреймворка Snap , потому что встроенная недостаточно модульная, и у него есть некоторые функции, которые являются избыточными / «мертвым грузом» для моего приложения. Однако эта проблема вообще не связана...
402 просмотров
schedule
12.07.2023
Как дополнительно ограничить существующий класс типов в Haskell
Есть ли способ дополнительно ограничить контекст существующего класса типов?
Например, класс типов Functor :
class Functor f where
fmap :: (a -> b) -> f a -> f b
Это определение класса не требует, чтобы a или b были...
237 просмотров
schedule
27.05.2023
Как легко сделать Data.List.Vector членом Arbitrary?
Я использую Data.List.Vector в своей программе, и теперь я хотел бы использовать для него quickCheck. Однако для этого нет экземпляра. Поскольку для [Double] уже есть произвольное значение, я подумал, что могу сделать что-то вроде
instance...
323 просмотров
schedule
02.11.2022
Почему этот код класса типов Haskell не работает?
Пытаюсь понять классы типов Haskell. Почему не работает следующее?
{-# LANGUAGE FlexibleInstances #-}
class IntClass t
instance IntClass Int
intToIntClass :: (IntClass r) => Int -> r
intToIntClass x = x
Ясно, что «экземпляр» не...
722 просмотров
schedule
01.05.2024
Обзор экземпляров класса типа Scalaz для других библиотек
Я часто обнаруживаю, что мне нужны экземпляры класса типа Scalaz для классов в других библиотеки Scala или Java. Приведу лишь несколько примеров:
Экземпляр моноида для Shapeless HList дает вам экземпляры моноидов для case-классов с...
414 просмотров
schedule
05.03.2022
Как здесь избежать явных подписей типов?
class Listy a b where
fromList :: [b] -> a
toList :: a -> [b]
lifted :: ([b] -> [b]) -> (a -> a)
lifted f = fromList . f . toList
data MyString = MyString { getString :: String } deriving Show
instance Listy MyString...
178 просмотров
schedule
17.02.2023
вывод параметра типа + типы более высокого порядка + классы типов = :-(
import scalaz._; import Scalaz._
def foo[M[_]:MonadPlus,A](a:A) = a.point[M]
// foo: [M[_], A](a: A)(implicit evidence$1: scalaz.MonadPlus[M])M[A]
def bar1[M[_]:MonadPlus](i:Int): M[Int] =
foo(i) // <-- error: ambiguous implicit values
//...
195 просмотров
schedule
11.12.2023