Skip to content

Commit 02c311a

Browse files
committed
refactor API
1 parent d79f745 commit 02c311a

File tree

255 files changed

+2150
-4154
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

255 files changed

+2150
-4154
lines changed

examples/HeadUsages.hs

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
module Main where
2+
3+
import Language.Haskell.Exts.Annotated
4+
import qualified Language.Haskell.Exts as UnAnn (Name(Ident))
5+
import Language.Haskell.Names
6+
import Language.Haskell.Names.Interfaces
7+
import Distribution.HaskellSuite
8+
import Distribution.Simple.Compiler
9+
10+
import Data.Maybe
11+
import Data.List
12+
import Data.Proxy
13+
import qualified Data.Foldable as Foldable
14+
import Text.Printf
15+
import Control.Applicative
16+
import Control.Monad
17+
18+
main :: IO ()
19+
main = do
20+
21+
-- read the program's source from stdin
22+
source <- getContents
23+
24+
let
25+
-- parse the program (using haskell-src-exts)
26+
ast = fromParseResult $
27+
parseModuleWithMode defaultParseMode {parseFilename="stdin"} source
28+
29+
-- get all installed packages (user and global)
30+
pkgs <-
31+
(++) <$>
32+
getInstalledPackages (Proxy :: Proxy NamesDB) UserPackageDB <*>
33+
getInstalledPackages (Proxy :: Proxy NamesDB) GlobalPackageDB
34+
35+
headUsages <- evalNamesModuleT (findHeads ast) pkgs
36+
37+
forM_ headUsages $ \loc ->
38+
printf "Prelude.head is used at %s\n" (prettyPrint $ srcInfoSpan loc)
39+
40+
when (null headUsages) $
41+
printf "Congratulations! Your code doesn't use Prelude.head\n"
42+
43+
-- this is a computation in a ModuleT monad, because we need access to
44+
-- modules' interfaces
45+
findHeads :: Module SrcSpanInfo -> ModuleT [Symbol] IO [SrcSpanInfo]
46+
findHeads ast = do
47+
-- first of all, figure out the canonical name of "Prelude.head"
48+
-- (hint: it's "GHC.List.head")
49+
symbols <- fromMaybe (error "Prelude not found") <$> getModuleInfo "Prelude"
50+
let
51+
-- we walk through all values defined in Prelude and look for
52+
-- one with name "head"
53+
headSymbol =
54+
fromMaybe (error "Prelude.head not found") (listToMaybe (do
55+
symbol <- symbols
56+
guard (symbolName symbol == UnAnn.Ident "head")
57+
return symbol))
58+
59+
-- annotate our ast with name binding information
60+
annotatedAst <-
61+
annotateModule
62+
Haskell2010 -- base language
63+
[] -- set of extensions
64+
ast
65+
66+
67+
let
68+
-- get list of all annotations
69+
annotations = Foldable.toList annotatedAst
70+
71+
-- look for headSymbol
72+
headUsages = nub (do
73+
Scoped (GlobalSymbol globalSymbol _) location <- annotations
74+
guard (globalSymbol == headSymbol)
75+
return location)
76+
77+
return headUsages

hs-gen-iface/src/hs-gen-iface.hs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,4 +101,4 @@ compile buildDir mbLang exts cppOpts pkgName pkgdbs deps files = do
101101

102102
createDirectoryIfMissingVerbose silent True (dropFileName ifaceFile)
103103

104-
writeInterface ifaceFile $ qualifySymbols pkgName syms
104+
writeInterface ifaceFile syms
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
[{"origin":{"name":"!","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"value"},{"origin":{"name":"//","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"value"},{"origin":{"name":"accum","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"value"},{"origin":{"name":"accumArray","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"value"},{"origin":{"name":"array","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"value"},{"origin":{"name":"assocs","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"value"},{"origin":{"name":"bounds","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"value"},{"origin":{"name":"elems","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"value"},{"origin":{"name":"indices","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"value"},{"origin":{"name":"ixmap","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"value"},{"origin":{"name":"listArray","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"value"},{"origin":{"name":"inRange","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"method","class":{"name":"Ix","module":"GHC.Arr","package":"base-4.7.0.0"}},{"origin":{"name":"index","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"method","class":{"name":"Ix","module":"GHC.Arr","package":"base-4.7.0.0"}},{"origin":{"name":"range","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"method","class":{"name":"Ix","module":"GHC.Arr","package":"base-4.7.0.0"}},{"origin":{"name":"rangeSize","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"method","class":{"name":"Ix","module":"GHC.Arr","package":"base-4.7.0.0"}},{"origin":{"name":"Array","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"data"},{"origin":{"name":"Ix","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"class"}]
1+
[{"name":"inRange","class":"Ix","entity":"method","module":"GHC.Arr"},{"name":"index","class":"Ix","entity":"method","module":"GHC.Arr"},{"name":"range","class":"Ix","entity":"method","module":"GHC.Arr"},{"name":"rangeSize","class":"Ix","entity":"method","module":"GHC.Arr"},{"name":"Ix","entity":"class","module":"GHC.Arr"},{"name":"Array","entity":"data","module":"GHC.Arr"},{"name":"array","entity":"value","module":"GHC.Arr"},{"name":"listArray","entity":"value","module":"GHC.Arr"},{"name":"accumArray","entity":"value","module":"GHC.Arr"},{"name":"!","entity":"value","module":"GHC.Arr"},{"name":"bounds","entity":"value","module":"GHC.Arr"},{"name":"indices","entity":"value","module":"GHC.Arr"},{"name":"elems","entity":"value","module":"GHC.Arr"},{"name":"assocs","entity":"value","module":"GHC.Arr"},{"name":"//","entity":"value","module":"GHC.Arr"},{"name":"accum","entity":"value","module":"GHC.Arr"},{"name":"ixmap","entity":"value","module":"GHC.Arr"}]

libraries/array-0.4.0.2/Data/Array/Base.names

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
[{"origin":{"name":"!","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"//","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"accum","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"accumArray","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"amap","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"array","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"assocs","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"elems","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"indices","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"ixmap","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"listArray","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"bounds","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"method","class":{"name":"IArray","module":"Data.Array.Base","package":"array-0.4.0.2"}},{"origin":{"name":"inRange","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"method","class":{"name":"Ix","module":"GHC.Arr","package":"base-4.7.0.0"}},{"origin":{"name":"index","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"method","class":{"name":"Ix","module":"GHC.Arr","package":"base-4.7.0.0"}},{"origin":{"name":"range","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"method","class":{"name":"Ix","module":"GHC.Arr","package":"base-4.7.0.0"}},{"origin":{"name":"rangeSize","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"method","class":{"name":"Ix","module":"GHC.Arr","package":"base-4.7.0.0"}},{"origin":{"name":"Array","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"data"},{"origin":{"name":"IArray","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"class"},{"origin":{"name":"Ix","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"class"}]
1+
[{"name":"IArray","entity":"class","module":"Data.Array.Base"},{"name":"inRange","class":"Ix","entity":"method","module":"GHC.Arr"},{"name":"index","class":"Ix","entity":"method","module":"GHC.Arr"},{"name":"range","class":"Ix","entity":"method","module":"GHC.Arr"},{"name":"rangeSize","class":"Ix","entity":"method","module":"GHC.Arr"},{"name":"Ix","entity":"class","module":"GHC.Arr"},{"name":"Array","entity":"data","module":"GHC.Arr"},{"name":"array","entity":"value","module":"Data.Array.Base"},{"name":"listArray","entity":"value","module":"Data.Array.Base"},{"name":"accumArray","entity":"value","module":"Data.Array.Base"},{"name":"!","entity":"value","module":"Data.Array.Base"},{"name":"bounds","class":"IArray","entity":"method","module":"Data.Array.Base"},{"name":"indices","entity":"value","module":"Data.Array.Base"},{"name":"elems","entity":"value","module":"Data.Array.Base"},{"name":"assocs","entity":"value","module":"Data.Array.Base"},{"name":"//","entity":"value","module":"Data.Array.Base"},{"name":"accum","entity":"value","module":"Data.Array.Base"},{"name":"amap","entity":"value","module":"Data.Array.Base"},{"name":"ixmap","entity":"value","module":"Data.Array.Base"}]
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
[{"origin":{"name":"freeze","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"getAssocs","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"getElems","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"mapArray","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"mapIndices","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"newListArray","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"readArray","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"thaw","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"writeArray","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"castIOUArray","module":"Data.Array.IO","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"hGetArray","module":"Data.Array.IO","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"hPutArray","module":"Data.Array.IO","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"unsafeFreeze","module":"Data.Array.MArray","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"unsafeThaw","module":"Data.Array.MArray","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"getBounds","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"method","class":{"name":"MArray","module":"Data.Array.Base","package":"array-0.4.0.2"}},{"origin":{"name":"newArray","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"method","class":{"name":"MArray","module":"Data.Array.Base","package":"array-0.4.0.2"}},{"origin":{"name":"newArray_","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"method","class":{"name":"MArray","module":"Data.Array.Base","package":"array-0.4.0.2"}},{"origin":{"name":"inRange","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"method","class":{"name":"Ix","module":"GHC.Arr","package":"base-4.7.0.0"}},{"origin":{"name":"index","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"method","class":{"name":"Ix","module":"GHC.Arr","package":"base-4.7.0.0"}},{"origin":{"name":"range","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"method","class":{"name":"Ix","module":"GHC.Arr","package":"base-4.7.0.0"}},{"origin":{"name":"rangeSize","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"method","class":{"name":"Ix","module":"GHC.Arr","package":"base-4.7.0.0"}},{"origin":{"name":"IOUArray","module":"Data.Array.IO.Internals","package":"array-0.4.0.2"},"fixity":null,"entity":"newtype"},{"origin":{"name":"IOArray","module":"GHC.IOArray","package":"base-4.7.0.0"},"fixity":null,"entity":"newtype"},{"origin":{"name":"MArray","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"class"},{"origin":{"name":"Ix","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"class"}]
1+
[{"name":"IOUArray","entity":"newtype","module":"Data.Array.IO.Internals"},{"name":"castIOUArray","entity":"value","module":"Data.Array.IO"},{"name":"freeze","entity":"value","module":"Data.Array.Base"},{"name":"getAssocs","entity":"value","module":"Data.Array.Base"},{"name":"getElems","entity":"value","module":"Data.Array.Base"},{"name":"mapArray","entity":"value","module":"Data.Array.Base"},{"name":"mapIndices","entity":"value","module":"Data.Array.Base"},{"name":"newListArray","entity":"value","module":"Data.Array.Base"},{"name":"readArray","entity":"value","module":"Data.Array.Base"},{"name":"thaw","entity":"value","module":"Data.Array.Base"},{"name":"writeArray","entity":"value","module":"Data.Array.Base"},{"name":"unsafeFreeze","entity":"value","module":"Data.Array.MArray"},{"name":"unsafeThaw","entity":"value","module":"Data.Array.MArray"},{"name":"getBounds","class":"MArray","entity":"method","module":"Data.Array.Base"},{"name":"newArray","class":"MArray","entity":"method","module":"Data.Array.Base"},{"name":"newArray_","class":"MArray","entity":"method","module":"Data.Array.Base"},{"name":"inRange","class":"Ix","entity":"method","module":"GHC.Arr"},{"name":"index","class":"Ix","entity":"method","module":"GHC.Arr"},{"name":"range","class":"Ix","entity":"method","module":"GHC.Arr"},{"name":"rangeSize","class":"Ix","entity":"method","module":"GHC.Arr"},{"name":"MArray","entity":"class","module":"Data.Array.Base"},{"name":"Ix","entity":"class","module":"GHC.Arr"},{"name":"hGetArray","entity":"value","module":"Data.Array.IO"},{"name":"hPutArray","entity":"value","module":"Data.Array.IO"}]
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
[{"origin":{"name":"castIOUArray","module":"Data.Array.IO.Internals","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"unsafeThawIOUArray","module":"Data.Array.IO.Internals","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"IOUArray","module":"Data.Array.IO.Internals","package":"array-0.4.0.2"},"type":{"name":"IOUArray","module":"Data.Array.IO.Internals","package":"array-0.4.0.2"},"fixity":null,"entity":"constructor"},{"origin":{"name":"IOArray","module":"GHC.IOArray","package":"base-4.7.0.0"},"type":{"name":"IOArray","module":"GHC.IOArray","package":"base-4.7.0.0"},"fixity":null,"entity":"constructor"},{"origin":{"name":"IOUArray","module":"Data.Array.IO.Internals","package":"array-0.4.0.2"},"fixity":null,"entity":"newtype"},{"origin":{"name":"IOArray","module":"GHC.IOArray","package":"base-4.7.0.0"},"fixity":null,"entity":"newtype"}]
1+
[{"name":"IOUArray","entity":"newtype","module":"Data.Array.IO.Internals"},{"name":"IOUArray","entity":"constructor","type":"IOUArray","module":"Data.Array.IO.Internals"},{"name":"castIOUArray","entity":"value","module":"Data.Array.IO.Internals"},{"name":"unsafeThawIOUArray","entity":"value","module":"Data.Array.IO.Internals"}]
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
[{"origin":{"name":"freeze","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"getAssocs","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"getElems","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"mapArray","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"mapIndices","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"newListArray","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"readArray","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"thaw","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"writeArray","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"hGetArray","module":"Data.Array.IO","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"hPutArray","module":"Data.Array.IO","package":"array-0.4.0.2"},"fixity":null,"entity":"value"},{"origin":{"name":"getBounds","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"method","class":{"name":"MArray","module":"Data.Array.Base","package":"array-0.4.0.2"}},{"origin":{"name":"newArray","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"method","class":{"name":"MArray","module":"Data.Array.Base","package":"array-0.4.0.2"}},{"origin":{"name":"newArray_","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"method","class":{"name":"MArray","module":"Data.Array.Base","package":"array-0.4.0.2"}},{"origin":{"name":"inRange","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"method","class":{"name":"Ix","module":"GHC.Arr","package":"base-4.7.0.0"}},{"origin":{"name":"index","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"method","class":{"name":"Ix","module":"GHC.Arr","package":"base-4.7.0.0"}},{"origin":{"name":"range","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"method","class":{"name":"Ix","module":"GHC.Arr","package":"base-4.7.0.0"}},{"origin":{"name":"rangeSize","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"method","class":{"name":"Ix","module":"GHC.Arr","package":"base-4.7.0.0"}},{"origin":{"name":"IOUArray","module":"Data.Array.IO.Internals","package":"array-0.4.0.2"},"fixity":null,"entity":"newtype"},{"origin":{"name":"IOArray","module":"GHC.IOArray","package":"base-4.7.0.0"},"fixity":null,"entity":"newtype"},{"origin":{"name":"MArray","module":"Data.Array.Base","package":"array-0.4.0.2"},"fixity":null,"entity":"class"},{"origin":{"name":"Ix","module":"GHC.Arr","package":"base-4.7.0.0"},"fixity":null,"entity":"class"}]
1+
[{"name":"IOUArray","entity":"newtype","module":"Data.Array.IO.Internals"},{"name":"freeze","entity":"value","module":"Data.Array.Base"},{"name":"getAssocs","entity":"value","module":"Data.Array.Base"},{"name":"getElems","entity":"value","module":"Data.Array.Base"},{"name":"mapArray","entity":"value","module":"Data.Array.Base"},{"name":"mapIndices","entity":"value","module":"Data.Array.Base"},{"name":"newListArray","entity":"value","module":"Data.Array.Base"},{"name":"readArray","entity":"value","module":"Data.Array.Base"},{"name":"thaw","entity":"value","module":"Data.Array.Base"},{"name":"writeArray","entity":"value","module":"Data.Array.Base"},{"name":"getBounds","class":"MArray","entity":"method","module":"Data.Array.Base"},{"name":"newArray","class":"MArray","entity":"method","module":"Data.Array.Base"},{"name":"newArray_","class":"MArray","entity":"method","module":"Data.Array.Base"},{"name":"inRange","class":"Ix","entity":"method","module":"GHC.Arr"},{"name":"index","class":"Ix","entity":"method","module":"GHC.Arr"},{"name":"range","class":"Ix","entity":"method","module":"GHC.Arr"},{"name":"rangeSize","class":"Ix","entity":"method","module":"GHC.Arr"},{"name":"MArray","entity":"class","module":"Data.Array.Base"},{"name":"Ix","entity":"class","module":"GHC.Arr"},{"name":"hGetArray","entity":"value","module":"Data.Array.IO"},{"name":"hPutArray","entity":"value","module":"Data.Array.IO"}]

0 commit comments

Comments
 (0)