Вопросы по теме 'template-haskell'

Есть ли какой-нибудь учебник по Template Haskell для тех, кто не знает Lisp?
Я хотел изучить Template Haskell, но все учебные материалы, которые я нахожу, предполагают, что вы выучили lisp и знаете, что такое макросы lisp, или что вы знаете некоторый жаргон теории cs - такие вещи, как сращивания, квазиквотации и т. Д. - или...
2119 просмотров

Получить имена полей записи Haskell в виде списка строк?
Скажем, у меня есть следующее: data Rec = Rec { alpha :: Int, beta :: Double, phi :: Float } sample = Rec 1 2.3 4.5 Я понимаю, что Template Haskell и функция reify могут дать мне имена полей записи. Это: print $(f...
2317 просмотров
schedule 05.04.2024

Бесточечный стиль в Template Haskell
Рассмотрим следующую функцию Template Haskell: composeQ :: ExpQ -> ExpQ -> ExpQ composeQ = \x y -> [| $(x) . $(y) |] Можно ли исключить лямбда-выражение из правой части уравнения и записать composeQ в бесточечном стиле?
225 просмотров

Создание типа данных из имени?
Возможное дублирование: Локальные переменные в объявлениях Template Haskell Я пытаюсь создать простую функцию Template Haskell, которая по строке типа «Foo» будет строить синтаксическое дерево для data Foo = Foo . Прямо сейчас я...
119 просмотров
schedule 27.10.2022

Шаблон Haskell и неявные параметры
Есть ли способ создавать функции с неявными параметрами или разрешать привязки с неявными параметрами с использованием шаблона haskell? т.е. можно ли сгенерировать такую ​​подпись с помощью шаблона haskell: doSomething :: (?context ::...
306 просмотров

Определение реализации метода на основе доступных ограничений
Предположим, у меня есть следующие функции запоминания. (Игнорируйте тот факт, что они чистые, пожалуйста.) memoEq :: Eq a => (a -> b) -> a -> b memoOrd :: Ord a => (a -> b) -> a -> b memoHash :: Hashable a...
192 просмотров
schedule 16.07.2022

Может ли квазицитатор «использовать» переменные, определенные в том же файле, в котором он вызывается?
Итак, я начинаю экспериментировать с квазицитатами и шаблонным haskell. Я хочу изменить существующий (большой) код квазицитирования, используя фактическое значение переменной, определенной там, где она «вызывается». Чтобы проиллюстрировать на...
238 просмотров
schedule 25.06.2023

Как получить объявление функции с помощью `reify`?
Функция reify позволяет мне посмотреть получить информацию об имени. Для функции возвращаемое значение равно VarI : data Info = ... | VarI Name Type (Maybe Dec) Fixity | ... Здесь я могу изучить тип функции, и я также хотел бы...
301 просмотров
schedule 12.02.2023

Шаблон Haskell: ошибка этапа
Я пытаюсь понять, как Quasi Quoter генерирует структуры TH. Итак, я пытаюсь преобразовать первый пример из Метапрограммирование шаблонов для Haskell , от формата в кавычках к просто типам. gen :: [Format] -> ExpQ -> ExpQ gen [] x =...
132 просмотров
schedule 23.10.2023

Как можно иметь две записи с одинаковыми именами полей?
Я пишу службу JSON для JIRA и столкнулся с требованием, которое конфликтует с пространством имен Haskell. у меня есть эта запись data Assignee = Assignee {name :: Text} deriving Generic instance ToJSON Assignee Это продиктовано тем, что...
171 просмотров
schedule 26.12.2022

Квазицитата с аргументами
Я хочу написать цитату на Haskell. Аргумент имени должен быть передан в функцию gen для создания объявления. quote :: String -> QuasiQuoter quote name = QuasiQuoter { quoteExp = undefined, quotePat = undefined, quoteType...
617 просмотров
schedule 22.01.2024

Как я могу создать данные с помощью шаблона Haskell
Могу ли я создать data haskell с помощью Template Haskell. Такие данные: data Shape = Circle [Float] Double Int Я хочу написать программу, которая создает данные, а затем использует их.
101 просмотров
schedule 20.04.2024

Возможно ли повторное использование GHCJS кода, сгенерированного Template Haskell?
В этот момент GHCJS не удается скомпилировать postgresql-simple пакет (см. [ 1 ]). Я хочу использовать пакет persistent для создания моделей БД. Интересно, можно ли компилировать модели с помощью самого GHC и повторно использовать код,...
152 просмотров

Как QuickCheck может проверить все свойства для каждого образца
... вместо создания 100 новых случайных выборок для каждого свойства? Мой набор тестов содержит описанный здесь метод TemplateHaskell [1] для тестирования всех функций с именем prop_ *. Запуск тестовой программы распечатывает === prop_foo from...
582 просмотров
schedule 03.05.2024

Почему нет представительства TH в TH?
Обратите внимание, что: Exp в template-haskell соответствует HsExpr в ГХК АСТ Type в template-haskell соответствует HsType в ГХК АСТ Dec в template-haskell соответствует HsDecl в ГХК АСТ Однако в типах...
62 просмотров
schedule 17.05.2024

Можно ли получить Data.Vector.Unbox через общий вывод GHC?
Можно получить Storable с помощью универсального механизма получения GHC: http://hackage.haskell.org/package/derive-storable (и https://hackage.haskell.org/package/derive-storable-plugin для повышения производительности). Однако единственная...
232 просмотров

Настраиваемый префикс пути с Yesod
У меня есть следующий веб-сервер: {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-} import Data.Text (Text) import Yesod data App...
51 просмотров
schedule 22.12.2023