Описание тега newtype

In Haskell programming language, a newtype declaration creates a new type in much the same way as data.
2 ответа

Почему я могу опустить конструктор при обращении к типам с переносом чисел нового типа?

На странице 321 из реального мира Haskell Есть эти коды, ... {-# LANGUAGE GeneralizedNewtypeDeriving #-} newtype AInt = A { unA::Int } deriving (Show, Eq, Num) instance Monoid AInt where mempty = 0 Мое замешательство, почему это mempty = 0 но нет me…
16 апр '13 в 04:17
1 ответ

Новый тип Haskell, который изменяет или переворачивает порядок

Там, вероятно, уже newtype что переворачивает смысл Ord, Bounded и т. д. Что-то вроде newtype FlipOrd a = FlipOrd {unFlip :: a} deriving (Eq) instance (Ord a) => Ord (FlipOrd a) where compare = flip compare instance (Bounded a) => Bounded (Fli…
18 ноя '13 в 21:59
1 ответ

Почему этому новому типу не дают правильный экземпляр Read?

Я создал newtype псевдоним IP введите от Data.IP: {-# LANGUAGE GeneralizedNewtypeDeriving #-} module IPAddress (IPAddress) where import Data.IP (IP) import Database.PostgreSQL.Simple.ToField newtype IPAddress = IPAddress IP deriving (Read, Show) ins…
03 апр '17 в 01:59
0 ответов

Новый тип, производный IsSequence

У меня новый тип X, который в основном список Ints. Я использую ClassyPrelude вместо стандартной Prelude и хочу получить класс IsSequence. Это делает необходимым также выводить множество других классов. Расширение языка GeneralizedNewtypeDeriving до…
11 апр '18 в 13:51
4 ответа

Какие языки программирования имеют что-то вроде `newtype` Хаскеля

Язык программирования Haskell имеет концепцию newtypes: Если я напишу newtype Foo = Foo (Bar)тогда новый тип Foo создан, который изоморфен Barт.е. есть биективные преобразования между ними. Свойства этой конструкции: Эти два типа полностью разделены…
1 ответ

Иностранный импорт нового типа по записи

Если у меня есть некоторые данные javascript JSON, могу ли я foreign import эти данные над пользовательским новым типом, но с подмножеством фактических данных? Например: в JavaScript: exports.foo = {foo: "foo", bar: "bar"} в purescript: newtype Foo …
18 мар '17 в 07:17
1 ответ

Как обернуть заемную стоимость в новый тип, который также является заемной стоимостью?

Я пытаюсь использовать шаблон нового типа, чтобы обернуть уже существующий тип. Этот внутренний тип имеет modify метод, который позволяет нам работать с заимствованным изменяемым значением в обратном вызове: struct Val; struct Inner(Val); impl Inner…
01 янв '19 в 22:59
1 ответ

Сбой GeneralizedNewtypeDeriving для PersistFieldSql

Я пытаюсь определить новый тип Markdown, и с помощью GeneralizedNewtypeDeriving для автоматического определения новых экземпляров: import Text.Markdown import Yesod.Text.Markdown import Database.Persist.Sql newtype MarkdownNewT = MarkdownNewT { getM…
17 сен '14 в 14:20
2 ответа

Невозможно обобщить операции с данными в Haskell, неоднозначный тип возврата

Я пытаюсь обобщить некоторый код, который у меня есть, для генерации отчета по различным представлениям за диапазон дат, например, представление может выглядеть так: | Signups | Active users ------|---------|-------------- 2018 | 155 | 3241 2017 | 1…
15 авг '18 в 10:05
2 ответа

Не несут ли новые типы никаких затрат, даже если вы не можете сопоставить их по образцу?

контекст Большинство учебных пособий по Haskell, которые я знаю (например, LYAH), представляют новые типы как бесплатную идиому, которая позволяет обеспечить большую безопасность типов. Например, этот код будет проверять тип: type Speed = Double ty…
13 мар '17 в 13:06
1 ответ

Что означает тип?

Это новый тип: newtype Combine a b = Combine { unCombine :: (a -> b) } У меня проблемы с пониманием многих вещей об этой линии, но первое - это фигурные скобки. Что они и что они здесь делают - создают функцию из двух типов входных данных?
29 мар '16 в 18:03
2 ответа

Ограничения для неупакованных типов

Интересно, почему у незаписанных типов в Haskell есть эти ограничения: Вы не можете определить новый тип для распакованного типа: newtype Vec = Vec (# Float#, Float# #) но вы можете определить тип synonim: type Vec = (# Float#, Float# #) Семейства т…
17 ноя '15 в 09:33
2 ответа

Как определить функцию внутри haskell newtype?

Я пытаюсь расшифровать синтаксис записи в haskell для newtype, и мое понимание нарушается, когда внутри newtype есть функция. Рассмотрим этот простой пример newtype C a b = C { getC :: (a -> b) -> a } На мой взгляд, C - это тип, который приним…
10 май '15 в 14:02
1 ответ

Невозможно получить Applicative при объединении двух стеков монадных трансформаторов.

Я написал две монады для предметно-ориентированного языка, который я разрабатываю. Первый Lang, который должен включать в себя все необходимое для разбора языка строка за строкой. Я знал, что я хочу читателя, писателя и государства, поэтому я исполь…
26 апр '16 в 18:17
3 ответа

Автоматически реализовывать свойства закрытого типа для новых типов Rust (структуры кортежей с одним полем)

В Rust структуры кортежей только с одним полем могут быть созданы следующим образом: struct Centimeters(i32); Я хочу сделать основную арифметику с Centimeters без извлечения их "внутренних" значений каждый раз с сопоставлением с образцом и без реали…
18 июл '14 в 18:30
1 ответ

Каково значение для соглашения "runSomething" в сообществе Haskell?

Я видел в некоторых документах и ​​учебных пособиях: runReader runState runState Какое абстрактное понятие охватывает этот шаблон? Что значит запустить что-то в Haskell? Побочный вопрос, есть ли тег для вещей, которые вы всегда хотели узнать, но боя…
29 дек '17 в 05:27
1 ответ

Разница между `data` и`newtype` в Haskell

Какая разница, когда я пишу это? data Book = Book Int Int против newtype Book = Book (Int, Int) -- "Book Int Int" is syntactically invalid
04 май '11 в 20:50
2 ответа

Определение нового типа на Haskell

Я прочитал это утверждение в коде, предоставленном для домашней работы:- newtype STR a = STR (Store -> (Result a, Store)) Приведенная выше ссылка выглядит так: a === (Store -> (Result a, Store)) Как это может быть действительным утверждением? …
09 фев '15 в 16:09
1 ответ

Как аккуратно деконструировать новые типы, вложенные в записи?

Я использую newtype в качестве поля записи, и сопоставление с образцом для "родительского" типа для извлечения вложенного значения является громоздким: newtype CityName = CityName String newtype City = City { name :: CityName } instance showCity :: …
03 окт '16 в 15:34
3 ответа

Перегрузка шоу для списка

Я хочу, чтобы представление, разделенное символом новой строки, вместо обычного, разделенного запятой, для новых типов данных: newtype SimpleRecord = SimpleRecord ([Char], [Char], Integer) deriving (Show) Я пытался написать этот выпуск Show class: i…
11 сен '12 в 21:55