ghc

    2熱度

    1回答

    (誤導性標題:它只是一個下面有很多相互關聯的類似問題:這些聽起來像是要求一個完整的參考手冊,但請記住這個主題有是沒有參考手冊,除了整個GHC的STG流水線階段的源代碼以及其他人/「內部人員」的集體積累經驗......) 我正在探索「transpiling」Haskell(從頭開始學習樂趣/學習,忽略現有項目;目標語言/ s類似的高級別/「已經適合的STG機器」與現有的GC + lambdas /函

    6熱度

    1回答

    我正在嘗試使用ekmett的線性庫,並且在Linear.V中遇到了可變長度向量的一些問題。如何使用dim函數來獲取矢量的大小?如何在嵌套V s的大方形矩陣上使用trace?我在這兩種情況下都會遇到錯誤。 最少的代碼: import qualified Data.Vector as Vector import Linear.V (V(V), dim) import Linear.Vector (

    11熱度

    1回答

    我試圖寫一個分析器使用parserspackage使用do語法。這裏是一個例子: {-# LANGUAGE ApplicativeDo #-} import Text.Parser.Char (string, spaces) import Text.Parser.Token (TokenParsing, natural) issueParser :: TokenParsing p => p

    3熱度

    1回答

    在下面的代碼中,我想在可能的情況下將g . f重寫爲h。可能有些情況h還沒有得到類的實例,但是我想在可能的情況下進行重寫。我收到一條錯誤消息,提示這是可以實現的,但我不確定我需要更改哪些內容。 下面是一些示例代碼: {-# LANGUAGE TypeFamilies #-} main = return() data D a f :: a -> D a f = undefined

    0熱度

    2回答

    下面是一個可能很愚蠢的例子,但我認爲解決這個問題將解決我的另一個問題,詳細的in this question。 我想編寫一個函數與此簽名: myread :: (Read a) => String -> a 使得myread = read,除非a ~ Int,在這種情況下myread _ = 0。 顯然這個函數本身很傻,但重點是我想根據返回類型進行優化。 重寫規則或其他任何東西都可以。對於我的

    9熱度

    1回答

    我正在研究一個旨在作爲服務工作的研究編譯器項目。其中一個要求是某些用戶在處理其呼叫時可能有限的內存使用情況(例如,「來自IP a.b.c.d的呼叫可能使用多達30mb的堆內存」)。我的原型實現,用C語言編寫,直接使用了一個內存池indeire(直接由於有效的類型實際上很難得到)。手動內存管理,但。 有沒有什麼辦法在Haskell中實現這一點,通過限制函數,monad或輕量級線程上的堆使用? (我會

    1熱度

    1回答

    在加布裏埃爾·岡薩雷斯對大廈哈斯凱爾項目尼克斯教程project 3,他寫道: 默認情況下,這些數據庫與GHC的-fsplit-objs標誌來啓用拆分對象編譯文件,這減少了庫的大小,但增加了編譯時間。這是我建議在開發過程中使用cabal構建根項目的另一個原因,因爲默認情況下cabal不會使用分割對象進行編譯,因此構建速度更快。但是,當Nix構建項目時,-fsplit-objs是一個很好的默認設置,

    5熱度

    2回答

    當然,產生異質列表的笛卡兒積的笛卡爾乘積可以在Haskell的一些方式來完成,如: [(x,y) | x <- [1,2,3], y <- [4,5,6]] 或 (,) <$> [1,2,3] <*> [4,5,6] 但我要的就是這樣的功能: heteroCartesian :: (a1, a2, ... , an) -> (b1, b2, ... , bn) ->

    3熱度

    1回答

    隨着-XDuplicateRecordFields,下面是允許的: {-# LANGUAGE DuplicateRecordFields #-} module Baz(Foo(..), Bar(..)) where data Foo = Foo {qux :: Int} data Bar = Bar {qux :: String} 但是,我得到一個編譯錯誤時Foo模塊Foo和Bar中

    2熱度

    1回答

    我想解析使用埃宋以下JSON在Haskell: { "foo": { "name": "name 1", "location": "location 1" }, "bar": { "name": "name 2", "location": "location 2" } } name和location已知的