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