Я нашел этот код первой полосы проекта Yesod: импортируйте данные Yesod HelloWorld = HelloWorld mkYesod "HelloWorld" [$parseRoutes |/Домой ДОБИРАЮТСЯ |] экземпляр Yesod HelloWorld где approot _ = ""...
У меня есть следующий Шаблон код Haskell в моем модуле, который является частью объемного приложения. $ (получают makeFoldable ''JStatement) я подозреваю, что сгенерированный экземпляр Складных не точно...
Я пытаюсь изучить немного Template Haskell. В качестве упражнения я написал функцию, которая может генерировать такие вещи, как isLeft и isRight (вдохновленные этим вопросом). Вот моя скромная попытка: isA connam = do ...
На основании недавнего обмена мнениями я был убежден использовать Template Haskell для генерации некоторого кода, чтобы гарантировать безопасность типов во время компиляции. Мне нужно проанализировать имена и типы полей записи. Я понимаю, что могу ...
С помощью hammar я создал бит шаблона Haskell, который компилирует $ (zModP 5) в новый тип Z5 = Z5 Int
экземпляр Additive.C Z5, где (Z5 x) + (Z5 y) = Z5 $ (x + y) `mod` 5
... Теперь я столкнулся с ...
Кажется, что Template Haskell часто рассматривается сообществом Haskell как досадное удобство. Трудно точно выразить словами то, что я наблюдал в этом отношении, но рассмотрим эти несколько...
В «Прикладном программировании с эффектами» Макбрайда и Патерсона они вводят прекрасный синтаксический сахар для поднятия чистой функции :[| f x y z |] для f <$> x < *> y < *> z и...
Я хотел изучить Template Haskell, но все найденные мной руководства предполагают, что вы выучили lisp и знаете, что такое макросы Lisp, или что вы знаете немного жаргона теории CS - такие штуки, как стыки, ...
Я играю с шаблоном Haskell. Я хочу создать квазиквотер, который позволяет мне создавать инициализаторы по умолчанию для записей, то есть что-то вроде [record | data Config = {shouldDoX = True; особенность ...
Предположим, у меня есть произвольный модуль модуля Foo, где фу ::Му -> Гу бар ::Автомобиль -> Дальний baz ::Can -> Haz, где правильно реализованы foo, bar и baz и т. д. Я хотел бы овеществить это...
У меня есть тривиальная программа Template Haskell, которая печатает имя текущего модуля (Main, здесь ):{ -#LANGUAGE TemplateHaskell #-} модуль Главный (главная )где импортировать Language.Haskell.TH импорт...
При использовании цепочки инструментов SBT в Scala можно ли написать задачу, которая будет читать специальную часть исходного кода проекта для генерации кода Scala -во время компиляции. Любые идеи или даже статьи/...
У меня есть новый тип данных Zq q = Zq (IntType q ), где «q» будет экземпляром класса класса Foo a, где тип IntType a, а «IntType» — это просто базовое представление (, т.е. Int,...
У меня есть куча функций, таких как :метод1, метод2, метод3. Для всех них есть тестовые функции HUnit, такие как :testMethod1, testMethod2, testMethod3. testMethod1 = TestCase $assertEqual "...
Я пишу генератор кода, вывод которого зависит от описания полей типа данных, которое хранится в их экземплярах класса. Однако я не могу найти, как запустить функцию с аргументом, сгенерированным TH. {...
К сожалению, многие функции Template Haskell не имеют абсолютно никакой документации. Одной из таких функций является отчет. Он принимает Bool и String и выдает ошибку компиляции с указанным ...
Я пишу много кода, например putStr "foo (bar 1) (bar 2) ="
print $ foo (bar 1) (bar 2) Проблема в том, что распечатанное сообщение может не синхронизироваться с фактическим исполняемым кодом. Очевидное ...
Если у меня есть имя в TemplateHaskell и я хочу узнать значение переменной, которую он называет, при условии, что переменная объявлена как литерал, может ли это быть сделано? var = "foo"
- Может `contentsOf` ...
Я пишу простой класс HashString, который представляет собой просто строку и ее хэш: data HashString = HashString Int - ^ hash T.Text - ^ string! Теперь я пытаюсь сгенерировать ...
Следующее не компилируется: import Language.Haskell.TH
makeAlpha n = [d | data Alpha = Alpha $ (conT n) deeding (Show, Read) |] Я вообще не могу понять, что означает ошибка: Невозможно получить ...
Как вы знаете, Template Haskell используется для программного создания различных видов соединений AST во время компиляции. Однако соединение часто может быть очень непрозрачным, и часто бывает трудно понять, что ...
У меня есть следующий фрагмент кода, который реализует монаду. Я пытаюсь использовать его для упрощения настройки полей с более сложной логикой позже. data Rec = Rec {alpha :: Int, beta :: ...
Скажем, у меня есть следующее: data Rec = Rec {alpha :: Int, beta :: Double, phi :: Float} sample = Rec 1 2.3 4.5 Я понимаю, что Template Haskell и функция reify могут дать мне ...
Я определяю экземпляры классов из векторного пространства для типов OpenGL, и, чтобы избавить свои печатные мышцы, я хочу использовать Template Haskell написать для меня кучу экземпляров. Я начал с малого ...
Кто-нибудь знает, есть ли в Haskell функция, которая делает что-то вроде этого: «Int» -> Int «String» -> String «Bool» -> Bool, т.е. он принимает строковое представление конструктора типа ...
Я пытаюсь создать кольцо Z / n (как обычная арифметика, но по модулю некоторого целого числа). Примером является Z4: instance Additive.C Z4, где ноль = Z4 0 (Z4 x) + (Z4 y) = Z4 $ (x + y) `mod` 4 ...
Цитирование TemplateHaskell документирует две кавычки ('') как способ получить имя типа:> ' 'String
GHC.Base.String Это отлично подходит для этого типа (имя). Однако я не могу найти способ сделать это ...
, я определил много функций (скажем, 100+), каждый из которых выполняет определенную работу, но с той же подписью. Это что-то вроде: модуль R001 (запущенный), где запустить =
Модуль R002 (RUN) Где ...
Контекст Я пишу модуль Haskell, представляющий префиксы SI: модуль Unit.SI.Prefix, где Каждый префикс SI имеет соответствующий тип данных: data Kilo = Kilo derating Показать
data Mega = Mega deriving ...
В документации по Safe Haskell сказано: [...] К сожалению, Template Haskell можно использовать для нарушения границ модуля и, таким образом, можно использовать для получения доступа к этому конструктору. [ ...] The u se of the -...