Публикации по теме 'typeclass'


Журналы Scala — Специальные классы полиморфизма и типов до 5 мин.
Продолжим тему полиморфизма. Как вы, возможно, уже знаете из предыдущей статьи , которую я написал о параметрическом полиморфизме, существует три типа полиморфизма : полиморфизм подтипа — старый добрый ООП (Cat — подтип Animal) параметрический полиморфизм — дженерики. Когда у вас есть тип, который принимает тип, например. Glass[Liquid] Специальный полиморфизм — это что-то вроде дженериков, но более гибкое и мощное. Давайте поговорим об этом сегодня. Если вы знакомы с..

О классах типов
Эмпирические правила для ограничений типа. Предпочитайте манипулировать данными через интерфейсы, а не напрямую. Если один класс типов может реализовать второй класс типов, первый класс типов является подтипом второго. В какой-то момент мне нужно было реализовать простую структуру стека в Haskell: import Data.List type Stack a = [a] push :: a -> Stack a -> Stack a push = ( : ) pop :: Stack a -> Maybe (a, Stack a) pop = uncons..

Понимание неявных параметров (с введением в каррирование)
Третья из Неявных Сестер, но не конец истории. Это третья часть из четырех частей. Если вы хотите прочитать обо всех трех формах неявного , вы можете начать здесь . Но если вы просто хотите узнать о неявных параметрах (и их аналогах в Scala 3, которые вводят аналоги given , using и summon ), читайте дальше! Но сначала я хочу сделать паузу и объяснить кое-какой интересный синтаксис, который может запутать новичков в Scala. Краткое введение в каррирование В этой статье я..

Журналы Scala - Тайна последствий развенчана
Сегодня я затрону довольно интересную тему - имплициты. Они почти так же интересны, как и печально известны тем, что добавляют сложности кодовой базе и отлаживают адские истории (предупреждение о спойлере: как вы скоро узнаете - только если они используются неправильно). Итак, давайте попробуем выяснить, что они собой представляют, для чего они нужны и, самое главное - когда мы должны использовать их в реальной жизни? И снова оказывается, что… как только вы усвоите основы,..

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

Классы типов в типах данных Haskell
В Haskell можно определить тип данных следующим образом: data Point1 = Point1 { x :: Integer , y :: Integer } Можно ли использовать классы типов для переменных внутри типа данных? Если да, то как? Я понимаю, что можно сделать это как...
7616 просмотров
schedule 18.11.2022

Как переопределить шоу для нового типа?
Я хочу переопределить целочисленные конструкторы по умолчанию в Haskell, чтобы они производили строки (в основном из любопытства, но временно, чтобы сделать хорошую альтернативу вводу для неудобств LaTeX \frac{}{}). Я хотел иметь возможность...
10255 просмотров
schedule 29.05.2022

Неявные параметры типа в определении класса Haskell?
Обычно кажется незаконным следующее: class Foo a where foo :: a -> b -> a Что имеет смысл; откуда мы знаем, что такое b ? Однако, если мы посмотрим на определение Functor: class Functor f where fmap :: (a -> b) ->...
364 просмотров
schedule 20.03.2023

Написание функции с универсальным типом возвращаемого значения
если я напишу foo :: (Num a) => a foo = 42 GHC с радостью примет это, но если я напишу bar :: (Num a) => a bar = (42 :: Int) он говорит мне, что ожидаемый тип a не соответствует предполагаемому типу Int . Я не совсем...
340 просмотров
schedule 22.09.2022

Шаблон класса типа в Scala не учитывает наследование?
В некоторых случаях я разрабатываю API с использованием классов типов, однако я столкнулся с проблемой неявного разрешения. Как показано ниже, если существует неявный объект для типа A, но объект типа B extends A передается методу, то неявный...
2259 просмотров
schedule 21.01.2023

Как мне перевести класс типа Haskell на F#?
Я пытаюсь перевести Arrows основной библиотеки Haskell на F # (я думаю, что это хорошее упражнение для лучшего понимания Arrows и F #, и я мог бы использовать их в проекте, над которым я работаю.) Однако прямой перевод невозможно из-за разницы в...
7057 просмотров

Что не так со следующим экземпляром класса типов haskell?
data II = I Int Int deriving (Show) instance II Show where show I a b = show (a+b) showt.hs:3:2: show' is not a (visible) method of class II'
2669 просмотров
schedule 29.03.2023

Проблема с иерархией классов типов Haskell
У меня есть сценарий, который включает классы типов, и я не совсем уверен, как его решить. у меня есть class Event a where timestamp :: a -> UTCTime rawData :: a -> ByteString class Something a where something :: a ->...
278 просмотров
schedule 28.04.2022

Частично применяемые конструкторы типов в объявлениях экземпляров
У меня есть конструктор типов type SimpleFcn α m = m α -> m α и я хочу использовать его в классе, где он будет дополнительно параметризован позже. А именно, instance A (SimpleFcn α) В моей ситуации любые функции класса A были...
542 просмотров
schedule 11.06.2024

Почему класс типов называется классом типов?
При более глубоком погружении в Scala я наткнулся на термин типовой класс . Это сбивало с толку, потому что класс — это тип, а тип может быть классом в Scala, а «тип» и «класс» сами по себе являются абстрактными терминами. Прочитав несколько...
1025 просмотров
schedule 09.04.2022

Как создать экземпляр Read для типа данных в haskell
Итак, у меня есть тип данных data SomeType a = Type a | Mix (SomeType a) (SomeType a) Это мой экземпляр шоу для SomeType instance (Show a) => Show (SomeType a) where show (Type a) = show a show (Mix a b) = "(" ++ show a...
4758 просмотров
schedule 17.01.2024

Недопустимое объявление экземпляра при объявлении экземпляра IsString
Я пишу приложение, использующее строки UTF-16, и, чтобы использовать расширение перегруженных строк, я попытался создать для него экземпляр IsString : import Data.Word ( Word16 ) import Data.String ( IsString(fromString) ) type String16 =...
9060 просмотров
schedule 02.09.2022

haskell: создание суперкласса Num
Я хочу сделать суперкласс Num, называемый Linear class Linear a where add :: a -> a -> a instance (Num a) => Linear a where add = (+) Я получаю сообщение об ошибке: Illegal instance declaration for `Linear a' (All...
642 просмотров
schedule 22.03.2023

Как мне написать экземпляр Data.Vector.Unboxed в Haskell?
У меня есть числовое приложение, которое много работает с отрицательными логарифмами вероятностей, которые (поскольку вероятности варьируются от нуля до единицы) принимают значения положительных удвоений или отрицательной бесконечности (если базовая...
1575 просмотров
schedule 09.04.2023

найти все типы, являющиеся экземплярами класса типов
Learnyouahaskell упоминает следующее : Типы в классе Enum: (), Bool, Char, Ordering, Int, Integer, Float and Double Есть ли способ узнать, какие типы являются экземплярами какого класса типов и наоборот в GHCi? Я хочу что-то вроде :t...
402 просмотров
schedule 17.05.2022

Генерация кода GHC для вызовов функций класса типов
В Haskell для определения экземпляра класса типов вам необходимо предоставить словарь функций, требуемых классом типов. т.е. чтобы определить экземпляр Bounded , вам нужно предоставить определение для minBound и maxBound . Для целей этого...
1748 просмотров
schedule 07.09.2022

Почему я не могу создать экземпляр с этим непараметризованным типом?
Почему этот код правильный instance Functor IO where -- note that IO isn't parametrized, and it's correct fmap f action = do result <- action return (f result) но следующий код имеет ошибку компилятора? class Print...
1420 просмотров
schedule 14.11.2022

Способ объявить постоянное значение в классе типа
Я хочу объявить класс типов, в котором есть некоторые реализованные функции, использующие нереализованное постоянное значение ( table ): class FromRow a => StdQueries a where table :: String byId :: Int -> QueryM (Maybe a) byId = fmap...
2255 просмотров
schedule 14.09.2023

Класс векторных типов Haskell: функция [a] -> [a] -> a
Хорошо, я пытаюсь разобраться с классами типов, поэтому я пытаюсь определить класс типов для операций с геометрическими векторами. Мне удалось заставить его работать по компонентам +,-,*,/; , но я борюсь с точечным продуктом. class GeomVector a...
435 просмотров
schedule 31.05.2022

Как распечатать результат добавления функции из класса Добавить из Fun с помощью функций типа
Ниже приведен код отсюда Развлечение с функциями типов {-# LANGUAGE MultiParamTypeClasses, FlexibleInstances, FlexibleContexts, TypeFamilies #-} -- Start basic class Add a b where type SumTy a b add :: a -> b -> SumTy a b instance...
220 просмотров
schedule 18.09.2022