我最近打開了GHC的-Wall選項,其中包括-fwarn-name-shadowing。所提供的基本原理是: 該選項使要發射的警告每當內範圍值具有相同的名稱作爲外範圍的值,即內值陰影外一個。這可以避免印刷錯誤,變成難以發現的錯誤。 但在實踐中我還沒有抓到任何錯誤,但是我有在我的職能方面取得的變量命名了很多尷尬的解決它。縮寫示例: -- General method for parsing a pa
我打開了GHC/Num.lhs文件,並能找到一些類似的代碼如下: instance Num Int where
I# x + I# y = I# (x +# y)
I# x - I# y = I# (x -# y)
negate (I# x) = I# (negateInt# x)
I# x * I# y = I# (x *# y)
abs n =
我有一個名爲Showable喜歡這類型: {-# LANGUAGE ExistentialQuantification #-}
{-# LANGUAGE ExplicitForAll #-}
data Showable = forall a . Show a => Showable a
然後使該包裝是微不足道的功能。我只需要寫: pack :: forall a . Sho
我爲Core Haskell編寫了一個自定義的漂亮打印機,以便更好地研究Core的結構。這臺漂亮的打印機的要點是它需要一個CoreModule,並在輸出中包含數據構造函數,默認情況下Outputable實現看起來沒有。 這裏是我上運行的漂亮打印機模塊的代碼: module Bar2 where
add :: Int -> Int -> Int
add a b = a + b
add2 a
在GHC 8: {-# LANGUAGE DuplicateRecordFields #-}
data Dog = Dog { name::String }
data Human = Human { name::String }
dog = Dog "Spike"
main = putStrLn $ name dog
此代碼不能編譯: Ambiguous occurrence
所以我有一個io-streams基於流水線我只是跑(解釋),並與-s傾倒統計: 123,680 bytes allocated in the heap
3,464 bytes copied during GC
68,912 bytes maximum residency (1 sample(s))
13,008 bytes maximum slop
我從一個動態庫(這裏只是zlibVersion)有一些C函數,我想從cabal包中的捆綁C代碼調用。在這裏,我將它直接稱爲外部導入,並通過捆綁的C代碼間接地將其稱爲後者,即使在前者成功後,後者也會崩潰ghci。 Main.hs: module Main (main) where
import Foreign.C.String (CString, peekCString)
foreign i