Вопросы по теме 'template-haskell'
Есть ли какой-нибудь учебник по Template Haskell для тех, кто не знает Lisp?
Я хотел изучить Template Haskell, но все учебные материалы, которые я нахожу, предполагают, что вы выучили lisp и знаете, что такое макросы lisp, или что вы знаете некоторый жаргон теории cs - такие вещи, как сращивания, квазиквотации и т. Д. - или...
2119 просмотров
schedule
13.07.2023
Получить имена полей записи 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 просмотров
schedule
23.10.2022
Создание типа данных из имени?
Возможное дублирование: Локальные переменные в объявлениях Template Haskell
Я пытаюсь создать простую функцию Template Haskell, которая по строке типа «Foo» будет строить синтаксическое дерево для data Foo = Foo .
Прямо сейчас я...
119 просмотров
schedule
27.10.2022
Шаблон Haskell и неявные параметры
Есть ли способ создавать функции с неявными параметрами или разрешать привязки с неявными параметрами с использованием шаблона haskell?
т.е. можно ли сгенерировать такую подпись с помощью шаблона haskell:
doSomething :: (?context ::...
306 просмотров
schedule
26.06.2023
Определение реализации метода на основе доступных ограничений
Предположим, у меня есть следующие функции запоминания. (Игнорируйте тот факт, что они чистые, пожалуйста.)
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 просмотров
schedule
02.06.2022
Как 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 просмотров
schedule
16.05.2022
Настраиваемый префикс пути с Yesod
У меня есть следующий веб-сервер:
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TypeFamilies #-}
import Data.Text (Text)
import Yesod
data App...
51 просмотров
schedule
22.12.2023