template-haskell

    6热度

    1回答

    我想制作一个表达式,以便我有编译时错误或URI。 [uri|http://stackoverflow.com|] 应该编译,但 [uri|foo:/bar:\|] 不应该。 我碰到过QuasiQuotes,这显然是针对这类问题。但是,我似乎无法从解析的URI创建Q Exp。 import Language.Haskell.TH.Quote import Language.Haskell.

    0热度

    1回答

    在Frames library中,有一个readTable函数,该函数根据CSV文件生成记录类型。 是否可以生成类似foreign import ccall unsafe "// c code" c_foo :: Int -> IO()的电话? 我试图完成如此使用[d| ... |]和[t| ... |] quasiquoters,但在我得到一个解析器错误。

    3热度

    1回答

    我想用DSum来做些什么。要与DSum一起使用,您需要具有一个采用一个类型参数的“标记”类型,例如, data Tag a where AFirst :: Tag Int ASecond :: Tag String 但是,我想在图书馆内部使用它。我想让我向用户公开的接口采用任何旧的数据类型,例如 data SomeUserType1 = Foo Int | Bar Stri

    1热度

    1回答

    说我有包含有效Haskell代码一个String(或Text或其他)。有没有一种方法可以将它转换为模板哈斯克尔[Dec]? 我敢肯定的AST不直接去GHC所以将是印刷,然后反正解析阶段。 这将是巨大的,有因为它允许不同的“后台”为TH。例如,你可以使用支持比TH更多的Haskell语法的haskell-src-exts的AST。

    1热度

    1回答

    我遇到了一个有趣的问题,我认为这可能是模板哈斯克尔的一个相关地方。我正在使用yesod和yesod-persistant在Web数据库的前端工作。我使用mkPerist函数和persistLowerCase准报价生成我的数据库类型。 我的问题是,我需要一种方法来编辑数据库的字段,但编写六个不同页面的每个列的哈姆雷特代码似乎令人难以置信的重复。我想我可以使用模板Haskell自动生成文本字段和复选框

    4热度

    1回答

    我正在HaTeX之上建立一个eDSL。我面临的问题是我想在我的LaTeX文档中显示Haskell表达式,并且我想使用相同的Haskell表达式来帮助生成文档。 显而易见的答案是复制和粘贴表达式,使其显示为带引号和实况。我想避免这种情况,因为表达可能会发生变化。 我在想象的是一个准标准器,它既能拼接它的内容,又能输出表示它的字符串。 例如,这里是我想输入的内容: document = do

    1热度

    1回答

    我有一个TemplateHaskell函数创建一个类名: test :: Q [Dec] test = do clsname <- newName "A" a <- newName "a" return [ ClassD [] clsname [PlainTV a] [][] ] 类名与newName生成的,所以应该是无冲突(原因是我直接在T

    1热度

    1回答

    有没有什么办法让单个TH功能,定义一个类型,并使用类型?下面的相关代码。 PersonPoly2由makeRecordSplice定义,然后传递给makeAdaptorAndInstance(来自Opalaye),这也是TH函数。 {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAG

    1热度

    1回答

    我正在使用Yesod构建一个简单的应用程序,并且我很难引入外部文件。这里是我的代码: {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeFamilies #-} import Yesod dat

    2热度

    1回答

    修改哈斯克尔嵌套记录说我有一个嵌套的结构如下: data Bar = Bar { _id :: Integer, _bars :: [Bar] } data Foo = Foo { _bars :: [Bar] } 而且我有一个Foo与各种id个一堆Bars: foo = Foo [Bar 1 [Bar 2], Bar 3 [Bar 4, Bar 5]] 怎么办,也许使用镜头,我修改fo