Запитання з тегом «typeclass»

Класи типів у Haskell - це мовний механізм для підтримки спеціального поліморфізму. Вони також існують у Скалі, Коку та Ізабеллі.

10
Інтерфейс Java та клас типу Haskell: відмінності та схожість?
Поки я навчаюсь Haskell, я помітив його клас типу , який повинен бути чудовим винаходом, що походить від Haskell. Однак на сторінці Вікіпедії про клас типу : Програміст визначає клас типу, задаючи набір функцій або постійних імен разом з їх відповідними типами, які повинні існувати для кожного типу, що належить …

2
Що таке клас класу Comonad у Haskell?
Що таке клас класу Comonad у Haskell? Як і в Comonad від Control.Comonad у пакеті comonad (пояснення будь-яких інших пакетів, які надають клас класу Comonad, також вітаються). Я розпливчасто чув про Комонаду, але все, що я насправді знаю про це, є те, що це забезпечує extract :: w a -> …

3
Як працює деривація в Haskell?
Алгебраїчні типи даних (ADT) в Haskell можуть автоматично ставати екземплярами деяких типів класів (наприкладShow,Eq), виходячи з них. data Maybe a = Nothing | Just a deriving (Eq, Ord) Моє запитання полягає в тому, як це derivingпрацює, тобто як Haskell знає, як реалізувати функції похідного класу для похідного ADT? Крім того, …

6
Осиротілі випадки в Хаскелі
Під час компіляції моєї програми Haskell з цією -Wallопцією GHC скаржиться на випадки, що залишились без батьків, наприклад: Publisher.hs:45:9: Warning: orphan instance: instance ToSElem Result Клас типу ToSElemне є моїм, він визначається HStringTemplate . Тепер я знаю, як це виправити (перемістити декларацію екземпляра в модуль, де оголошено результат), і я …
86 haskell  ghc  typeclass 


1
Різниця між типовими класами MonadPlus, Alternative та Monoid?
Стандартна бібліотека Haskell класів типів MonadPlus, Alternativeі Monoidкожен з них надає два методи з практично тією ж самою семантикою: Пусте значення: mzero, emptyабо mempty. Оператор , a -> a -> aякий з'єднує значення в класі типів разом: mplus, <|>або mappend. Усі три визначають ці закони, яких слід дотримуватися: mempty `mappend` …

5
Хаскелл розкладає просту "середню" функцію
Я бавлюся з початківцем Хаскеллом, і я хотів написати середню функцію. Це здавалося найпростішим у світі, чи не так? Неправильно. Здається, що система типу Хаскелла забороняє в середньому працювати над загальним числовим типом - я можу змусити його працювати у списку інтегралів або списку фракціонів, але не в обох. Я …

1
Вивести Ord з кількісно обмеженими обмеженнями (для a. Ord a => Ord (fa))
З кількісно вираженими обмеженнями я можу вийти Eq (A f)просто добре? Однак, коли я намагаюся отримати Ord (A f), це не вдається. Я не розумію, як використовувати кількісні обмеження, коли клас обмеження має надклас. Як вивести Ord (A f)та інші класи, які мають суперкласи? > newtype A f = A …

1
Створення повністю залежної конкатенації
Приємний справжній факт конкатенації полягає в тому, що якщо я знаю будь-які дві змінні рівняння: a ++ b = c Тоді я знаю третє. Я хотів би зафіксувати цю ідею у власному стислі, тому я використовую функціональну залежність. {-# Language DataKinds, GADTs, FlexibleContexts, FlexibleInstances, FunctionalDependencies, KindSignatures, PolyKinds, TypeOperators, UndecidableInstances #-} …

1
Чому в цьому ручному визначеному екземплярі HasField не працює "фокус обмеження"?
У мене є цей (правда, дивний) код, який використовує об'єктив і GHC.Records : {-# LANGUAGE DataKinds, PolyKinds, FlexibleInstances, UndecidableInstances #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeFamilies #-} module Main where import Control.Lens import GHC.Records data Glass r = Glass -- just …

1
Явний, статичний тип відливання (примус) у Хаскеллі
Проблема Розглянемо наступну проблему дизайну в Haskell. У мене є простий, символічний EDSL, в якому я хочу висловити змінні та загальні вирази (багатоваріантні многочлени), такі як x^2 * y + 2*z + 1. Крім того, я хочу висловити певні символічні рівняння над виразами, скажімо x^2 + 1 = 1, так …
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.