git.iko.soy/typeable/cabal2nix
on ce03fdf help sign in
typeable/cabal2nix/src/hackage2nix.hs
3901 lines 87 kB history raw
1{-# LANGUAGE RecordWildCards #-}
3module Main ( main ) where
5import Cabal2Nix.Flags ( configureCabalFlags )
6import Cabal2Nix.Generate ( cabal2nix' )
7import Cabal2Nix.HackageGit ( readHackage, Hackage )
8import Cabal2Nix.Package
9import Cabal2Nix.Version
10import Control.Arrow ( second )
11import Control.Lens
12import Control.Monad
13import Control.Monad.Par.Combinator
14import Control.Monad.Par.IO
15import Control.Monad.Trans ( liftIO )
16import Data.Function
17import Data.List
18-- import Data.Char
19import Data.Map.Strict ( Map )
20import qualified Data.Map.Strict as Map
21import Data.Maybe
22import Data.Monoid
23import Data.Set ( Set )
24import qualified Data.Set as Set
25import Distribution.Compiler
26import Distribution.Nixpkgs.Fetch
27import Distribution.Nixpkgs.Haskell
28import Distribution.Nixpkgs.Meta
29import Distribution.Nixpkgs.PackageMap
30import Distribution.Nixpkgs.Util.PrettyPrinting hiding ( attr, (<>) )
31import Distribution.Package
32import Distribution.PackageDescription hiding ( options, buildDepends, extraLibs, buildTools )
33import Distribution.PackageDescription.Configuration
34import Distribution.System
35import Distribution.Text
36import Distribution.Version
37import Language.Nix.Identifier
38import Options.Applicative
39-- import qualified Distribution.Compat.ReadP as Parse
41type Nixpkgs = PackageMap -- Map String (Set [String])
42type PackageSet = Map String Version
43type PackageMultiSet = Map String (Set Version)
45type Constraint = Dependency
47resolveConstraint :: Constraint -> Hackage -> Version
48resolveConstraint c = fromMaybe (error ("constraint " ++ display c ++ " cannot be resolved in Hackage")) .
49 resolveConstraint' c
51resolveConstraint' :: Constraint -> Hackage -> Maybe Version
52resolveConstraint' (Dependency (PackageName name) vrange) hackage | Set.null vs = Nothing
53 | otherwise = Just (Set.findMax vs)
54 where vs = Set.filter (`withinRange` vrange) (Map.keysSet (hackage Map.! name))
56data Configuration = Configuration
57 {
58 -- |Target architecture. Used by 'finalizePackageDescription' to
59 -- choose appropriate flags and dependencies.
60 platform :: Platform
62 -- |Target compiler. Used by 'finalizePackageDescription' to choose
63 -- appropriate flags and dependencies.
64 , compilerInfo :: CompilerInfo
66 -- |Core packages found on Hackageg
67 , corePackages :: [PackageIdentifier]
69 -- |Core packages not found on Hackage.
70 , hardCorePackages :: [PackageIdentifier]
72 -- |These packages replace the latest respective version during
73 -- dependency resolution.
74 , defaultPackageOverrides :: [Constraint]
76 -- |These packages are added to the generated set, but the play no
77 -- role during dependency resolution.
78 , extraPackages :: [Constraint]
80 -- |These packages have not succeeded a build yet, so we give them an
81 -- empty meta.hydraPlatforms attribute to avoid cluttering our Hydra
82 -- output with lots of broken builds.
83 , brokenPackages :: Set PackageName
84 }
85 deriving (Read, Show)
87data Options = Options
88 { hackageRepository :: FilePath
89 , nixpkgsRepository :: FilePath
90 }
91 deriving (Show)
93options :: Parser Options
94options = Options
95 <$> strOption (long "hackage" <> help "path to Hackage git repository" <> value "hackage" <> showDefault <> metavar "PATH")
96 <*> strOption (long "nixpkgs" <> help "path to Nixpkgs repository" <> value "<nixpkgs>" <> showDefault <> metavar "PATH")
98pinfo :: ParserInfo Options
99pinfo = info
100 ( helper
101 <*> infoOption ("hackage2nix " ++ version) (long "version" <> help "Show version number")
102 <*> options
103 )
104 ( fullDesc
105 <> header "hackage2nix converts a Hackage database into a haskell-packages.nix file."
106 )
108main :: IO ()
109main = do
110 Options {..} <- execParser pinfo
112 hackage <- readHackage hackageRepository
113 nixpkgs <- readNixpkgPackageMap nixpkgsRepository
114 let fixup = Map.delete "acme-everything" -- TODO: https://github.com/NixOS/cabal2nix/issues/164
115 . Map.delete "som" -- TODO: https://github.com/NixOS/cabal2nix/issues/164
116 . Map.delete "type" -- TODO: https://github.com/NixOS/cabal2nix/issues/163
117 . Map.delete "dictionary-sharing" -- TODO: https://github.com/NixOS/cabal2nix/issues/175
118 runParIO $ generatePackageSet defaultConfiguration (fixup hackage) nixpkgs
120generatePackageSet :: Configuration -> Hackage -> Nixpkgs -> ParIO ()
121generatePackageSet config hackage nixpkgs = do
122 let
123 corePackageSet :: PackageSet
124 corePackageSet = Map.fromList [ (name, v) | PackageIdentifier (PackageName name) v <- corePackages config ++ hardCorePackages config ]
126 latestVersionSet :: PackageSet
127 latestVersionSet = Map.map (Set.findMax . Map.keysSet) hackage
129 defaultPackageOverridesSet :: PackageSet
130 defaultPackageOverridesSet = Map.fromList [ (name, resolveConstraint c hackage) | c@(Dependency (PackageName name) _) <- defaultPackageOverrides config ]
132 generatedDefaultPackageSet :: PackageSet
133 generatedDefaultPackageSet = (defaultPackageOverridesSet `Map.union` latestVersionSet) `Map.difference` corePackageSet
135 latestCorePackageSet :: PackageSet
136 latestCorePackageSet = latestVersionSet `Map.intersection` corePackageSet
138 latestOverridePackageSet :: PackageSet
139 latestOverridePackageSet = latestVersionSet `Map.intersection` defaultPackageOverridesSet
141 extraPackageSet :: PackageMultiSet
142 extraPackageSet = Map.unionsWith Set.union
143 [ Map.singleton name (Set.singleton (resolveConstraint c hackage)) | c@(Dependency (PackageName name) _) <- extraPackages config ]
145 db :: PackageMultiSet
146 db = Map.unionsWith Set.union [ Map.map Set.singleton generatedDefaultPackageSet
147 , Map.map Set.singleton latestCorePackageSet
148 , Map.map Set.singleton latestOverridePackageSet
149 , extraPackageSet
150 ]
152 knownAttributesSet :: Set String
153 knownAttributesSet = Set.union (Map.keysSet hackage) (Map.keysSet corePackageSet)
155 resolver :: Dependency -> Bool
156 resolver (Dependency (PackageName name) vrange)
157 | Just v <- Map.lookup name corePackageSet = v `withinRange` vrange
158 | Just v <- Map.lookup name generatedDefaultPackageSet = v `withinRange` vrange
159 | otherwise = False
161 liftIO $ do putStrLn "/* hackage-packages.nix is an auto-generated file -- DO NOT EDIT! */"
162 putStrLn ""
163 putStrLn "{ pkgs, stdenv, callPackage }:"
164 putStrLn ""
165 putStrLn "self: {"
166 putStrLn ""
167 pkgs <- flip parMapM (Map.toAscList db) $ \(name, vs) -> do
168 defs <- forM (Set.toAscList vs) $ \pkgversion -> do
169 let -- TODO: Include list of broken dependencies in the generated output.
170 descr = hackage Map.! name Map.! pkgversion
171 (missingDeps, _, drv') = cabal2nix resolver descr
173 haskellDependencies :: Set String
174 haskellDependencies = Set.map (view ident) $ mconcat [ drv'^.x.haskell | x <- [libraryDepends,executableDepends,testDepends] ]
176 systemDependencies :: Set String
177 systemDependencies = Set.map (view ident) $ mconcat [ drv'^.x.y | x <- [libraryDepends,executableDepends,testDepends], y <- [system,pkgconfig] ]
179 haskellOrSystemDependencies :: Set String
180 haskellOrSystemDependencies = Set.map (view ident) $ mconcat [ drv'^.x.tool | x <- [libraryDepends,executableDepends,testDepends] ]
182 missing :: Set String
183 missing = Set.filter (`Set.notMember` knownAttributesSet) haskellDependencies
185 buildInputs :: Map Attribute (Maybe Path)
186 buildInputs = Map.unions
187 [ Map.fromList [ (n, Nothing) | n <- Set.toList missing ]
188 , Map.fromList [ (n, resolveNixpkgsAttribute nixpkgs n) | n <- Set.toAscList systemDependencies ]
189 , Map.fromList [ (n, resolveHackageThenNixpkgsAttribute nixpkgs hackage n) | n <- Set.toAscList haskellOrSystemDependencies ]
190 ]
192 systemOverrides :: Doc
193 systemOverrides = fsep (map (uncurry formatOverride) (Map.toAscList buildInputs))
195 formatOverride :: Attribute -> Maybe Path -> Doc
196 formatOverride n Nothing = space <> text n <> text " = null;" -- missing attribute
197 formatOverride n (Just []) -- Haskell package:
198 | n == name = formatOverride n Nothing -- refers to a missing system library
199 | otherwise = mempty -- found by callPackage
200 formatOverride n (Just p) = (text " inherit" <+> parens (text (intercalate "." p)) <+> text n) <> semi
202 overrides :: Doc
203 overrides = systemOverrides
205 attr | Just v <- Map.lookup name generatedDefaultPackageSet, v == pkgversion = name
206 | otherwise = name ++ '_' : [ if c == '.' then '_' else c | c <- display pkgversion ]
208 sha256 :: String
209 sha256 | Just x <- lookup "X-Package-SHA256" (customFieldsPD (packageDescription descr)) = x
210 | otherwise = error $ display (packageId descr) ++ " has no hash"
212 srcSpec <- liftIO $ sourceFromHackage (Certain sha256) (name ++ "-" ++ display pkgversion)
214 let drv = drv' & src .~ srcSpec
215 & jailbreak .~ (not (null missingDeps) && (name /= "jailbreak-cabal")) -- Dependency constraints aren't fulfilled
216 & metaSection . broken .~ not (Set.null missing) -- Missing Haskell dependencies!
217 & metaSection.hydraPlatforms .~ (if PackageName name `Set.member` brokenPackages config
218 then Set.singleton "stdenv.lib.platforms.none"
219 else drv'^.metaSection.hydraPlatforms)
221 return $ nest 2 $ hang (string attr <+> equals <+> text "callPackage") 2 (parens (pPrint drv)) <+> (braces overrides <> semi)
222 return (intercalate "\n\n" (map render defs))
224 liftIO $ mapM_ (\pkg -> putStrLn pkg >> putStrLn "") pkgs
225 liftIO $ putStrLn "}"
227resolveHackageThenNixpkgsAttribute :: Nixpkgs -> Hackage -> Attribute -> Maybe Path
228resolveHackageThenNixpkgsAttribute nixpkgs hackage name
229 | Just _ <- Map.lookup name hackage = Just []
230 | p@(Just _) <- resolveNixpkgsAttribute nixpkgs name = p
231 | otherwise = Nothing
233resolveNixpkgsAttribute :: Nixpkgs -> Attribute -> Maybe Path
234resolveNixpkgsAttribute nixpkgs name
235 | name `elem` ["clang","lldb","llvm"] = Just ["self","llvmPackages"]
236 | Just paths <- Map.lookup name nixpkgs = getShortestPath (Set.toList (paths `Set.intersection` goodScopes))
237 | otherwise = Nothing
238 where
239 goodScopes :: Set Path
240 goodScopes = Set.fromList [[], ["xlibs"], ["gnome"], ["gnome3"], ["kde4"]]
242 getShortestPath :: [Path] -> Maybe Path
243 getShortestPath [] = Nothing
244 getShortestPath ps = Just ("pkgs" : minimumBy (on compare length) ps)
246cabal2nix :: (Dependency -> Bool) -> GenericPackageDescription -> ([Dependency], FlagAssignment, Derivation)
247cabal2nix resolver cabal = (missingDeps, flags, drv)
248 where
249 drv = cabal2nix' descr
251 Right (descr, flags) = finalize (if null missingDeps then resolver else const True) cabal
253 missingDeps :: [Dependency]
254 missingDeps = either id (const []) (finalize resolver cabal')
256 finalize :: (Dependency -> Bool) -> GenericPackageDescription -> Either [Dependency] (PackageDescription, FlagAssignment)
257 finalize resolver' = finalizePackageDescription
258 (configureCabalFlags (package (packageDescription cabal)))
259 resolver'
260 (platform defaultConfiguration)
261 (compilerInfo defaultConfiguration)
262 [] -- no additional constraints
264 -- A variant of the cabal file that has all test suites enabled to ensure
265 -- that their dependencies are recognized by finalizePackageDescription.
266 cabal' :: GenericPackageDescription
267 cabal' = cabal { condTestSuites = flaggedTests }
269 flaggedTests :: [(String, CondTree ConfVar [Dependency] TestSuite)]
270 flaggedTests = map (second (mapTreeData enableTest)) (condTestSuites cabal)
272 enableTest :: TestSuite -> TestSuite
273 enableTest t = t { testEnabled = True }
275defaultConfiguration :: Configuration
276defaultConfiguration = Configuration
277 { platform = Platform X86_64 Linux
278 , compilerInfo = unknownCompilerInfo (CompilerId GHC (Version [7,10,2] [])) NoAbiTag
280 , defaultPackageOverrides = map (\s -> fromMaybe (error (show s ++ " is not a valid override selector")) (simpleParse s))
281 [ "errors < 2" -- the update breaks some ~40 important packages
282 , "vector < 0.11" -- breaks lens 4.12
283 ]
285 , corePackages = map (\s -> fromMaybe (error (show s ++ " is not a valid core package")) (simpleParse s))
286 [ "Cabal-1.22.4.0"
287 , "array-0.5.1.0"
288 , "base-4.8.1.0"
289 , "binary-0.7.5.0"
290 , "bytestring-0.10.6.0"
291 , "containers-0.5.6.2"
292 , "deepseq-1.4.1.1"
293 , "directory-1.2.2.0"
294 , "filepath-1.4.0.0"
295 , "ghc-prim-0.4.0.0"
296 , "haskeline-0.7.2.1"
297 , "hoopl-3.10.0.2"
298 , "hpc-0.6.0.2"
299 , "integer-gmp-1.0.0.0"
300 , "pretty-1.1.2.0"
301 , "process-1.2.3.0"
302 , "template-haskell-2.10.0.0"
303 , "terminfo-0.4.0.1"
304 , "time-1.5.0.1"
305 , "transformers-0.4.2.0"
306 , "unix-2.7.1.0"
307 , "xhtml-3000.2.1"
308 ]
310 , hardCorePackages = map (\s -> fromMaybe (error (show s ++ " is not a valid core package")) (simpleParse s))
311 [ "bin-package-db-0.0.0.0"
312 , "ghc-7.10.2"
313 , "rts-1.0"
314 ]
316 , extraPackages = map (\s -> fromMaybe (error (show s ++ " is not a valid extra package selector")) (simpleParse s))
317 [ "aeson < 0.8" -- newer versions don't work with GHC 6.12.3
318 , "Cabal == 1.18.*" -- required for cabal-install et al on old GHC versions
319 , "Cabal == 1.20.*" -- required for cabal-install et al on old GHC versions
320 , "cabal-install == 1.18.*" -- required for ghc-mod on 7.8.x
321 , "conduit < 1.2.4.2" -- newer versions trigger non-deterministic ID bugs in GHC versions prior to 7.10.x
322 , "containers < 0.5" -- required to build alex with GHC 6.12.3
323 , "control-monad-free < 0.6" -- newer versions don't compile with anything but GHC 7.8.x
324 , "deepseq == 1.3.0.1" -- required to build Cabal with GHC 6.12.3
325 , "descriptive < 0.1" -- required for structured-haskell-mode-1.0.8
326 , "gloss < 1.9.3" -- new versions don't compile with GHC 7.8.x
327 , "haddock-api < 2.16" -- required on GHC 7.8.x
328 , "haskell-src-exts < 1.16" -- required for structured-haskell-mode-1.0.8
329 , "mtl < 2.2" -- newer versions require transformers > 0.4.x, which we cannot provide in GHC 7.8.x
330 , "mtl-prelude < 2" -- required for to build postgrest on mtl 2.1.x platforms
331 , "optparse-applicative == 0.10.*" -- required for elm-make 0.1.1 and elm-package 0.4
332 , "parallel == 3.2.0.3" -- newer versions don't work with GHC 6.12.3
333 , "primitive == 0.5.1.*" -- required to build alex with GHC 6.12.3
334 , "QuickCheck < 2" -- required by test-framework-quickcheck and its users
335 , "seqid < 0.2" -- newer versions depend on transformers 0.4.x which we cannot provide in GHC 7.8.x
336 , "seqid-streams < 0.2" -- newer versions depend on transformers 0.4.x which we cannot provide in GHC 7.8.x
337 , "split < 0.2" -- newer versions don't work with GHC 6.12.3
338 , "tar < 0.4.2.0" -- later versions don't work with GHC < 7.6.x
339 , "vector < 0.10.10" -- newer versions don't work with GHC 6.12.3
340 , "zlib < 0.6" -- newer versions break cabal-install
341 ]
343 , brokenPackages = Set.fromList $ map PackageName
344 [ "3dmodels"
345 , "4Blocks"
346 , "abcBridge"
347 , "abstract-par-accelerate"
348 , "abt"
349 , "AC-BuildPlatform"
350 , "accelerate-arithmetic"
351 , "accelerate-fftw"
352 , "accelerate-fourier"
353 , "accelerate-io"
354 , "accelerate-utility"
355 , "accentuateus"
356 , "access-time"
357 , "AC-EasyRaster-GTK"
358 , "AC-HalfInteger"
359 , "ACME"
360 , "acme-hq9plus"
361 , "acme-inator"
362 , "acme-numbersystem"
363 , "acme-schoenfinkel"
364 , "acme-zero"
365 , "AC-MiniTest"
366 , "AC-Terminal"
367 , "ActionKid"
368 , "activehs"
369 , "actor"
370 , "AC-VanillaArray"
371 , "Adaptive"
372 , "Adaptive-Blaisorblade"
373 , "adaptive-containers"
374 , "adaptive-tuple"
375 , "adblock2privoxy"
376 , "adhoc-network"
377 , "adict"
378 , "adobe-swatch-exchange"
379 , "adp-multi"
380 , "adp-multi-monadiccp"
381 , "Advgame"
382 , "AERN-Basics"
383 , "AERN-Net"
384 , "AERN-Real"
385 , "AERN-Real-Double"
386 , "AERN-Real-Interval"
387 , "AERN-RnToRm"
388 , "AERN-RnToRm-Plot"
389 , "aeson-bson"
390 , "AesonBson"
391 , "aeson-native"
392 , "aeson-smart"
393 , "afv"
394 , "Agata"
395 , "agda-server"
396 , "AGI"
397 , "AhoCorasick"
398 , "airbrake"
399 , "aivika-experiment-diagrams"
400 , "aivika-transformers"
401 , "ajhc"
402 , "alea"
403 , "algebraic"
404 , "alms"
405 , "alpha"
406 , "alpino-tools"
407 , "alsa"
408 , "alsa-midi"
409 , "alsa-pcm-tests"
410 , "alsa-seq-tests"
411 , "altfloat"
412 , "alure"
413 , "amazon-emailer"
414 , "amazon-products"
415 , "AMI"
416 , "ampersand"
417 , "anansi-pandoc"
418 , "anatomy"
419 , "android-lint-summary"
420 , "AndroidViewHierarchyImporter"
421 , "angel"
422 , "Animas"
423 , "antfarm"
424 , "anticiv"
425 , "antigate"
426 , "antimirov"
427 , "antlrc"
428 , "anydbm"
429 , "aosd"
430 , "apelsin"
431 , "apiary-helics"
432 , "apiary-purescript"
433 , "apis"
434 , "api-tools"
435 , "apotiki"
436 , "appc"
437 , "app-lens"
438 , "ApplePush"
439 , "AppleScript"
440 , "approx-rand-test"
441 , "arbb-vm"
442 , "arb-fft"
443 , "archiver"
444 , "archlinux"
445 , "archlinux-web"
446 , "arff"
447 , "argparser"
448 , "arguedit"
449 , "ariadne"
450 , "arion"
451 , "armada"
452 , "array-forth"
453 , "ArrayRef"
454 , "arrowapply-utils"
455 , "arrow-improve"
456 , "arrowp"
457 , "ArrowVHDL"
458 , "arx"
459 , "ascii85-conduit"
460 , "asic"
461 , "asil"
462 , "asn1-data"
463 , "AspectAG"
464 , "assimp"
465 , "astrds"
466 , "astview"
467 , "async-extras"
468 , "aterm-utils"
469 , "atlassian-connect-core"
470 , "atlassian-connect-descriptor"
471 , "atom-basic"
472 , "atom-msp430"
473 , "atomo"
474 , "attoparsec-csv"
475 , "attoparsec-iteratee"
476 , "attoparsec-text"
477 , "attoparsec-text-enumerator"
478 , "Attrac"
479 , "atuin"
480 , "augeas"
481 , "augur"
482 , "Aurochs"
483 , "authoring"
484 , "AutoForms"
485 , "autoproc"
486 , "avahi"
487 , "avers"
488 , "AvlTree"
489 , "awesomium"
490 , "awesomium-glut"
491 , "awesomium-raw"
492 , "AWin32Console"
493 , "aws-cloudfront-signer"
494 , "aws-ec2"
495 , "aws-elastic-transcoder"
496 , "aws-kinesis-reshard"
497 , "aws-lambda"
498 , "aws-sdk"
499 , "aws-sdk-text-converter"
500 , "aws-sdk-xml-unordered"
501 , "aws-sign4"
502 , "aws-sns"
503 , "azure-service-api"
504 , "azurify"
505 , "backdropper"
506 , "bag"
507 , "Baggins"
508 , "bamboo"
509 , "bamboo-launcher"
510 , "bamboo-plugin-highlight"
511 , "bamboo-plugin-photo"
512 , "bamboo-theme-blueprint"
513 , "bamboo-theme-mini-html5"
514 , "bamse"
515 , "barcodes-code128"
516 , "barley"
517 , "Barracuda"
518 , "barrie"
519 , "barrier-monad"
520 , "baskell"
521 , "battleships"
522 , "bayes-stack"
523 , "BCMtools"
524 , "beamable"
525 , "beautifHOL"
526 , "bed-and-breakfast"
527 , "Befunge93"
528 , "bein"
529 , "berkeleydb"
530 , "BerkeleyDBXML"
531 , "berp"
532 , "bff"
533 , "bgzf"
534 , "bidirectionalization-combined"
535 , "bidispec"
536 , "billboard-parser"
537 , "billeksah-forms"
538 , "billeksah-main"
539 , "billeksah-pane"
540 , "billeksah-services"
541 , "binary-derive"
542 , "binary-file"
543 , "binary-indexed-tree"
544 , "binary-protocol-zmq"
545 , "binary-streams"
546 , "binary-strict"
547 , "binding-gtk"
548 , "bindings-apr"
549 , "bindings-apr-util"
550 , "bindings-bfd"
551 , "bindings-cctools"
552 , "bindings-codec2"
553 , "bindings-common"
554 , "bindings-dc1394"
555 , "bindings-eskit"
556 , "bindings-EsounD"
557 , "bindings-fann"
558 , "bindings-friso"
559 , "bindings-gts"
560 , "bindings-hdf5"
561 , "bindings-K8055"
562 , "bindings-libftdi"
563 , "bindings-librrd"
564 , "bindings-libstemmer"
565 , "bindings-libv4l2"
566 , "bindings-linux-videodev2"
567 , "bindings-mpdecimal"
568 , "bindings-sc3"
569 , "bindings-sipc"
570 , "bind-marshal"
571 , "bio"
572 , "Biobase"
573 , "BiobaseBlast"
574 , "BiobaseDotP"
575 , "BiobaseFasta"
576 , "BiobaseFR3D"
577 , "BiobaseInfernal"
578 , "BiobaseMAF"
579 , "BiobaseTrainingData"
580 , "BiobaseTurner"
581 , "BiobaseVienna"
582 , "biophd"
583 , "biosff"
584 , "biostockholm"
585 , "bird"
586 , "BirdPP"
587 , "bit-array"
588 , "bitcoin-rpc"
589 , "Bitly"
590 , "bitly-cli"
591 , "bits-conduit"
592 , "bitset"
593 , "bitspeak"
594 , "BitSyntax"
595 , "bittorrent"
596 , "bkr"
597 , "bla"
598 , "black-jewel"
599 , "blakesum"
600 , "blakesum-demo"
601 , "blank-canvas"
602 , "blas"
603 , "blas-hs"
604 , "blaze"
605 , "blaze-html-contrib"
606 , "blaze-html-hexpat"
607 , "blazeMarker"
608 , "blaze-textual-native"
609 , "Blobs"
610 , "blogination"
611 , "BlogLiterately-diagrams"
612 , "Blueprint"
613 , "bluetile"
614 , "board-games"
615 , "bogre-banana"
616 , "Bookshelf"
617 , "boolean-normal-forms"
618 , "bools"
619 , "boolsimplifier"
620 , "boomslang"
621 , "borel"
622 , "bot"
623 , "brainfuck-monad"
624 , "Bravo"
625 , "breakout"
626 , "brians-brain"
627 , "brillig"
628 , "bsd-sysctl"
629 , "bson-generics"
630 , "bson-mapping"
631 , "btree-concurrent"
632 , "buildbox-tools"
633 , "buildwrapper"
634 , "bullet"
635 , "buster"
636 , "Buster"
637 , "buster-gtk"
638 , "buster-network"
639 , "bytable"
640 , "bytestring-class"
641 , "bytestring-csv"
642 , "bytestringparser"
643 , "bytestring-plain"
644 , "bytestringreadp"
645 , "bytestring-rematch"
646 , "bytestring-short"
647 , "cabal2arch"
648 , "cabal2doap"
649 , "cabal2spec"
650 , "cabal-constraints"
651 , "cabal-dev"
652 , "cabal-ghci"
653 , "cabalgraph"
654 , "cabal-graphdeps"
655 , "cabal-install-bundle"
656 , "cabal-install-ghc72"
657 , "cabal-install-ghc74"
658 , "cabalmdvrpm"
659 , "cabal-query"
660 , "cabalrpmdeps"
661 , "cabal-scripts"
662 , "cabal-setup"
663 , "cabal-test"
664 , "cabal-upload"
665 , "cabocha"
666 , "cake3"
667 , "cakyrespa"
668 , "cal3d"
669 , "cal3d-examples"
670 , "cal3d-opengl"
671 , "calc"
672 , "caldims"
673 , "caledon"
674 , "call-haskell-from-anything"
675 , "campfire"
676 , "cantor"
677 , "cao"
678 , "cap"
679 , "Capabilities"
680 , "capri"
681 , "carboncopy"
682 , "carettah"
683 , "casadi-bindings"
684 , "casadi-bindings-control"
685 , "casadi-bindings-core"
686 , "casadi-bindings-internal"
687 , "casadi-bindings-ipopt-interface"
688 , "casadi-bindings-snopt-interface"
689 , "Cascade"
690 , "cascading"
691 , "cash"
692 , "cassandra-thrift"
693 , "cassava-streams"
694 , "cassy"
695 , "casui"
696 , "Catana"
697 , "catch-fd"
698 , "categorical-algebra"
699 , "category-extras"
700 , "CBOR"
701 , "CC-delcont"
702 , "CC-delcont-alt"
703 , "CC-delcont-cxe"
704 , "CC-delcont-exc"
705 , "CC-delcont-ref"
706 , "CC-delcont-ref-tf"
707 , "cci"
708 , "cctools-workqueue"
709 , "cedict"
710 , "ceilometer-common"
711 , "cereal-enumerator"
712 , "cereal-ieee754"
713 , "cereal-plus"
714 , "certificate"
715 , "cf"
716 , "cfipu"
717 , "cflp"
718 , "cfopu"
719 , "cgen"
720 , "cgi-utils"
721 , "chalkboard"
722 , "chalkboard-viewer"
723 , "charade"
724 , "Chart-diagrams"
725 , "chatter"
726 , "checked"
727 , "check-pvp"
728 , "chevalier-common"
729 , "Chitra"
730 , "chp"
731 , "chp-mtl"
732 , "chp-plus"
733 , "chp-spec"
734 , "chp-transformers"
735 , "ChristmasTree"
736 , "chronograph"
737 , "chuchu"
738 , "chunks"
739 , "church-list"
740 , "cil"
741 , "cinvoke"
742 , "c-io"
743 , "cio"
744 , "citation-resolve"
745 , "citeproc-hs"
746 , "citeproc-hs-pandoc-filter"
747 , "cjk"
748 , "clac"
749 , "clafer"
750 , "claferIG"
751 , "claferwiki"
752 , "CLASE"
753 , "clash"
754 , "clash-ghc"
755 , "clash-prelude"
756 , "clash-prelude-quickcheck"
757 , "clash-systemverilog"
758 , "clash-vhdl"
759 , "ClassLaws"
760 , "ClassyPrelude"
761 , "clckwrks"
762 , "clckwrks-cli"
763 , "clckwrks-dot-com"
764 , "clckwrks-plugin-bugs"
765 , "clckwrks-plugin-ircbot"
766 , "clckwrks-plugin-media"
767 , "clckwrks-plugin-page"
768 , "clckwrks-theme-bootstrap"
769 , "clckwrks-theme-clckwrks"
770 , "clckwrks-theme-geo-bootstrap"
771 , "Clean"
772 , "clevercss"
773 , "clifford"
774 , "clipper"
775 , "clippings"
776 , "clocked"
777 , "clogparse"
778 , "clone-all"
779 , "cloudfront-signer"
780 , "cloud-haskell"
781 , "cloudyfs"
782 , "clua"
783 , "cluss"
784 , "clustering"
785 , "clustertools"
786 , "clutterhs"
787 , "cmaes"
788 , "cmath"
789 , "cmathml3"
790 , "CMCompare"
791 , "cmdargs-browser"
792 , "cmdtheline"
793 , "cmonad"
794 , "cnc-spec-compiler"
795 , "cndict"
796 , "Coadjute"
797 , "Codec-Image-DevIL"
798 , "codec-libevent"
799 , "codecov-haskell"
800 , "codemonitor"
801 , "codepad"
802 , "cognimeta-utils"
803 , "coinbase-exchange"
804 , "colada"
805 , "collada-output"
806 , "collada-types"
807 , "collections"
808 , "collections-api"
809 , "collections-base-instances"
810 , "coltrane"
811 , "com"
812 , "combinat"
813 , "combinat-diagrams"
814 , "combinatorial-problems"
815 , "combinator-interactive"
816 , "Combinatorrent"
817 , "Commando"
818 , "commodities"
819 , "commsec"
820 , "commsec-keyexchange"
821 , "comonad-extras"
822 , "comonad-random"
823 , "compact-map"
824 , "compact-string"
825 , "compilation"
826 , "complexity"
827 , "compose-trans"
828 , "compression"
829 , "compstrat"
830 , "comptrans"
831 , "computational-algebra"
832 , "concraft"
833 , "concraft-hr"
834 , "concraft-pl"
835 , "concrete-typerep"
836 , "concurrent-state"
837 , "ConcurrentUtils"
838 , "condor"
839 , "Condor"
840 , "condorcet"
841 , "conductive-clock"
842 , "conductive-hsc3"
843 , "conduit-audio-lame"
844 , "conduit-audio-samplerate"
845 , "conduit-iconv"
846 , "conduit-network-stream"
847 , "conduit-resumablesink"
848 , "Configger"
849 , "config-select"
850 , "conjure"
851 , "consistent"
852 , "const-math-ghc-plugin"
853 , "constrained-categories"
854 , "constructive-algebra"
855 , "consul-haskell"
856 , "Consumer"
857 , "context-stack"
858 , "continue"
859 , "continuum"
860 , "continuum-client"
861 , "Contract"
862 , "control-event"
863 , "control-monad-attempt"
864 , "control-monad-exception-mtl"
865 , "control-monad-failure"
866 , "control-monad-failure-mtl"
867 , "Control-Monad-MultiPass"
868 , "Control-Monad-ST2"
869 , "contstuff-monads-tf"
870 , "contstuff-transformers"
871 , "convertible-ascii"
872 , "convertible-text"
873 , "copilot"
874 , "copilot-c99"
875 , "copilot-cbmc"
876 , "copilot-core"
877 , "copilot-language"
878 , "copilot-libraries"
879 , "copilot-sbv"
880 , "COrdering"
881 , "core"
882 , "corebot-bliki"
883 , "CoreErlang"
884 , "CoreFoundation"
885 , "core-haskell"
886 , "Coroutine"
887 , "coroutine-iteratee"
888 , "CouchDB"
889 , "couchdb-conduit"
890 , "couchdb-enumerator"
891 , "couch-hs"
892 , "court"
893 , "CPBrainfuck"
894 , "cpio-conduit"
895 , "CPL"
896 , "cplusplus-th"
897 , "cpsa"
898 , "cpuperf"
899 , "cpython"
900 , "cqrs"
901 , "cqrs-example"
902 , "cqrs-postgresql"
903 , "cqrs-sqlite3"
904 , "cqrs-test"
905 , "cqrs-types"
906 , "cr"
907 , "crack"
908 , "Craft3e"
909 , "craftwerk"
910 , "craftwerk-cairo"
911 , "craftwerk-gtk"
912 , "crc16"
913 , "crf-chain1"
914 , "crf-chain1-constrained"
915 , "crf-chain2-generic"
916 , "crf-chain2-tiers"
917 , "criterion-plus"
918 , "crocodile"
919 , "crunghc"
920 , "crypto-cipher-benchmarks"
921 , "cryptsy-api"
922 , "crystalfontz"
923 , "cse-ghc-plugin"
924 , "csound-catalog"
925 , "csound-expression"
926 , "csound-expression-opcodes"
927 , "csound-expression-typed"
928 , "csound-sampler"
929 , "csp"
930 , "cspmchecker"
931 , "CSPM-cspm"
932 , "CSPM-FiringRules"
933 , "CSPM-Frontend"
934 , "CSPM-Interpreter"
935 , "CSPM-ToProlog"
936 , "css"
937 , "ctemplate"
938 , "ctkl"
939 , "ctpl"
940 , "cudd"
941 , "curry-base"
942 , "CurryDB"
943 , "curry-frontend"
944 , "cursedcsv"
945 , "curves"
946 , "CV"
947 , "cypher"
948 , "dag"
949 , "DAG-Tournament"
950 , "Dangerous"
951 , "dao"
952 , "Dao"
953 , "dapi"
954 , "darcs2dot"
955 , "darcs-benchmark"
956 , "darcs-beta"
957 , "darcs-buildpackage"
958 , "darcs-cabalized"
959 , "darcsden"
960 , "darcs-graph"
961 , "DarcsHelpers"
962 , "darcs-monitor"
963 , "darcs-scripts"
964 , "darcswatch"
965 , "darkplaces-demo"
966 , "data-cycle"
967 , "data-dispersal"
968 , "data-easy"
969 , "data-extra"
970 , "data-ivar"
971 , "data-lens-ixset"
972 , "datalog"
973 , "data-named"
974 , "data-nat"
975 , "data-object-json"
976 , "data-object-yaml"
977 , "data-quotientref"
978 , "data-rope"
979 , "Data-Rope"
980 , "data-store"
981 , "DataTreeView"
982 , "data-type"
983 , "dbjava"
984 , "d-bus"
985 , "DBus"
986 , "dbus-client"
987 , "dbus-core"
988 , "dclabel"
989 , "ddc-build"
990 , "ddc-core"
991 , "ddc-core-eval"
992 , "ddc-core-flow"
993 , "ddc-core-llvm"
994 , "ddc-core-salt"
995 , "ddc-core-simpl"
996 , "ddc-core-tetra"
997 , "ddc-driver"
998 , "ddci-core"
999 , "ddc-source-tetra"
1000 , "ddc-tools"
1001 , "Deadpan-DDP"
1002 , "dead-simple-json"
1003 , "decepticons"
1004 , "DecisionTree"
1005 , "decoder-conduit"
1006 , "dedukti"
1007 , "deeplearning-hs"
1008 , "deepseq-bounded"
1009 , "deepseq-th"
1010 , "deepzoom"
1011 , "defargs"
1012 , "DefendTheKing"
1013 , "definitive-base"
1014 , "definitive-filesystem"
1015 , "definitive-graphics"
1016 , "definitive-parser"
1017 , "definitive-reactive"
1018 , "definitive-sound"
1019 , "deka"
1020 , "deka-tests"
1021 , "delicious"
1022 , "delta-h"
1023 , "demarcate"
1024 , "denominate"
1025 , "depends"
1026 , "dephd"
1027 , "dequeue"
1028 , "derangement"
1029 , "derivation-trees"
1030 , "derive-gadt"
1031 , "derive-IG"
1032 , "derive-topdown"
1033 , "derive-trie"
1034 , "derp-lib"
1035 , "dewdrop"
1036 , "Dflow"
1037 , "dfsbuild"
1038 , "dgim"
1039 , "dgs"
1040 , "diagrams-builder"
1041 , "diagrams-canvas"
1042 , "diagrams-haddock"
1043 , "diagrams-hsqml"
1044 , "diagrams-pdf"
1045 , "diagrams-pgf"
1046 , "diagrams-qrcode"
1047 , "diagrams-tikz"
1048 , "dice-entropy-conduit"
1049 , "dicom"
1050 , "dictparser"
1051 , "diffcabal"
1052 , "DifferenceLogic"
1053 , "DifferentialEvolution"
1054 , "digestive-functors-hsp"
1055 , "DimensionalHash"
1056 , "dingo-core"
1057 , "dingo-example"
1058 , "dingo-widgets"
1059 , "diophantine"
1060 , "direct-binary-files"
1061 , "directed-cubical"
1062 , "direct-fastcgi"
1063 , "direct-http"
1064 , "direct-plugins"
1065 , "DirectSound"
1066 , "dirfiles"
1067 , "discount"
1068 , "disjoint-set"
1069 , "DisTract"
1070 , "distributed-process-async"
1071 , "distributed-process-azure"
1072 , "distributed-process-client-server"
1073 , "distributed-process-execution"
1074 , "distributed-process-extras"
1075 , "distributed-process-platform"
1076 , "distributed-process-registry"
1077 , "distributed-process-supervisor"
1078 , "distributed-process-task"
1079 , "distributed-process-tests"
1080 , "distributed-process-zookeeper"
1081 , "distribution"
1082 , "distribution-plot"
1083 , "dist-upload"
1084 , "djinn-th"
1085 , "DnaProteinAlignment"
1086 , "dnscache"
1087 , "dnssd"
1088 , "doccheck"
1089 , "docidx"
1090 , "docker"
1091 , "dockercook"
1092 , "doc-review"
1093 , "DocTest"
1094 , "doctest-discover"
1095 , "doctest-discover-configurator"
1096 , "DOM"
1097 , "download"
1098 , "download-media-content"
1099 , "DP"
1100 , "dph-examples"
1101 , "dph-lifted-base"
1102 , "dph-lifted-copy"
1103 , "dph-lifted-vseg"
1104 , "dph-par"
1105 , "dph-prim-par"
1106 , "dph-seq"
1107 , "DPM"
1108 , "drClickOn"
1109 , "DrHylo"
1110 , "DrIFT"
1111 , "DrIFT-cabalized"
1112 , "dropbox-sdk"
1113 , "dropsolve"
1114 , "ds-kanren"
1115 , "dsmc"
1116 , "dsmc-tools"
1117 , "dsp"
1118 , "DSTM"
1119 , "dstring"
1120 , "dtab"
1121 , "DTC"
1122 , "dtd"
1123 , "dtd-text"
1124 , "dtd-types"
1125 , "dtw"
1126 , "duplo"
1127 , "Dust"
1128 , "Dust-crypto"
1129 , "Dust-tools"
1130 , "Dust-tools-pcap"
1131 , "dvda"
1132 , "dvdread"
1133 , "dx9base"
1134 , "dx9d3d"
1135 , "dx9d3dx"
1136 , "dynamic-object"
1137 , "dynamic-plot"
1138 , "dynamic-pp"
1139 , "DynamicTimeWarp"
1140 , "dynobud"
1141 , "DysFRP-Cairo"
1142 , "DysFRP-Craftwerk"
1143 , "easy-api"
1144 , "easyjson"
1145 , "easyplot"
1146 , "easyrender"
1147 , "ecdsa"
1148 , "ecu"
1149 , "ed25519"
1150 , "edenmodules"
1151 , "edenskel"
1152 , "edentv"
1153 , "edge"
1154 , "EdisonCore"
1155 , "editable"
1156 , "edit-lenses"
1157 , "editline"
1158 , "EditTimeReport"
1159 , "EEConfig"
1160 , "effective-aspects"
1161 , "effective-aspects-mzv"
1162 , "effect-monad"
1163 , "egison-quote"
1164 , "ehaskell"
1165 , "ehs"
1166 , "eibd-client-simple"
1167 , "eithers"
1168 , "EitherT"
1169 , "Elm"
1170 , "elm-build-lib"
1171 , "elm-compiler"
1172 , "elm-get"
1173 , "elm-make"
1174 , "elm-package"
1175 , "elm-reactor"
1176 , "elm-repl"
1177 , "elm-server"
1178 , "elm-yesod"
1179 , "email"
1180 , "email-header"
1181 , "email-postmark"
1182 , "embeddock"
1183 , "embeddock-example"
1184 , "embroidery"
1185 , "emgm"
1186 , "Emping"
1187 , "empty"
1188 , "Encode"
1189 , "enumfun"
1190 , "EnumMap"
1191 , "enummapmap"
1192 , "env-parser"
1193 , "epoll"
1194 , "epubname"
1195 , "Eq"
1196 , "equational-reasoning"
1197 , "erlang"
1198 , "eros-client"
1199 , "error-message"
1200 , "ersatz"
1201 , "ersatz-toysat"
1202 , "esotericbot"
1203 , "EsounD"
1204 , "estimators"
1205 , "estreps"
1206 , "Etage"
1207 , "Etage-Graph"
1208 , "EtaMOO"
1209 , "eternal"
1210 , "Eternal10Seconds"
1211 , "Etherbunny"
1212 , "ethereum-client-haskell"
1213 , "ethereum-merkle-patricia-db"
1214 , "euphoria"
1215 , "eurofxref"
1216 , "Euterpea"
1217 , "event-driven"
1218 , "event-monad"
1219 , "EventSocket"
1220 , "every-bit-counts"
1221 , "ewe"
1222 , "exif"
1223 , "exists"
1224 , "expand"
1225 , "expat-enumerator"
1226 , "explain"
1227 , "explicit-sharing"
1228 , "explore"
1229 , "exposed-containers"
1230 , "exp-pairs"
1231 , "extcore"
1232 , "extemp"
1233 , "extended-categories"
1234 , "external-sort"
1235 , "ez-couch"
1236 , "faceted"
1237 , "factual-api"
1238 , "FailureT"
1239 , "fallingblocks"
1240 , "falling-turnip"
1241 , "fastirc"
1242 , "fast-tags"
1243 , "fault-tree"
1244 , "fay-hsx"
1245 , "fcd"
1246 , "fckeditor"
1247 , "FComp"
1248 , "fdo-trash"
1249 , "feed2lj"
1250 , "feed2twitter"
1251 , "feed-cli"
1252 , "feldspar-compiler"
1253 , "feldspar-language"
1254 , "fences"
1255 , "fenfire"
1256 , "FermatsLastMargin"
1257 , "FerryCore"
1258 , "ffeed"
1259 , "ffmpeg-tutorials"
1260 , "fibon"
1261 , "fields"
1262 , "FieldTrip"
1263 , "fieldwise"
1264 , "FileManip"
1265 , "FileManipCompat"
1266 , "FileSystem"
1267 , "filesystem-conduit"
1268 , "filesystem-enumerator"
1269 , "Finance-Quote-Yahoo"
1270 , "Finance-Treasury"
1271 , "find-conduit"
1272 , "FiniteMap"
1273 , "firstify"
1274 , "FirstOrderTheory"
1275 , "fit"
1276 , "fitsio"
1277 , "fixed-point"
1278 , "fixed-point-vector"
1279 , "fixed-point-vector-space"
1280 , "fixed-precision"
1281 , "fixed-storable-array"
1282 , "fix-parser-simple"
1283 , "fixplate"
1284 , "fix-symbols-gitit"
1285 , "flexiwrap"
1286 , "flexiwrap-smallcheck"
1287 , "flickr"
1288 , "Flippi"
1289 , "flite"
1290 , "flo"
1291 , "floating-bits"
1292 , "flow2dot"
1293 , "flowdock-api"
1294 , "flower"
1295 , "flowlocks-framework"
1296 , "flowsim"
1297 , "FModExRaw"
1298 , "FM-SBLEX"
1299 , "foldl-incremental"
1300 , "folds"
1301 , "folds-common"
1302 , "follower"
1303 , "Folly"
1304 , "foma"
1305 , "font-opengl-basic4x6"
1306 , "foo"
1307 , "forbidden-fruit"
1308 , "fordo"
1309 , "for-free"
1310 , "formal"
1311 , "format"
1312 , "format-status"
1313 , "forml"
1314 , "formlets"
1315 , "formlets-hsp"
1316 , "ForSyDe"
1317 , "forth-hll"
1318 , "Foster"
1319 , "fpco-api"
1320 , "fpnla-examples"
1321 , "FPretty"
1322 , "frag"
1323 , "franchise"
1324 , "Frank"
1325 , "free-game"
1326 , "freekick2"
1327 , "freenect"
1328 , "free-operational"
1329 , "freesect"
1330 , "freesound"
1331 , "free-theorems"
1332 , "free-theorems-counterexamples"
1333 , "free-theorems-seq"
1334 , "free-theorems-seq-webui"
1335 , "free-theorems-webui"
1336 , "FreeTypeGL"
1337 , "frp-arduino"
1338 , "fs-events"
1339 , "fsmActions"
1340 , "fswatcher"
1341 , "ftdi"
1342 , "ftp-conduit"
1343 , "ftshell"
1344 , "full-sessions"
1345 , "fullstop"
1346 , "functional-arrow"
1347 , "function-combine"
1348 , "functor-apply"
1349 , "functorm"
1350 , "funion"
1351 , "funsat"
1352 , "future"
1353 , "fuzzytime"
1354 , "gact"
1355 , "gameclock"
1356 , "game-of-life"
1357 , "Ganymede"
1358 , "gc-monitoring-wai"
1359 , "gdiff-ig"
1360 , "gdiff-th"
1361 , "geek"
1362 , "geek-server"
1363 , "gemstone"
1364 , "gencheck"
1365 , "gender"
1366 , "genders"
1367 , "general-prelude"
1368 , "GeneralTicTacToe"
1369 , "generators"
1370 , "generic-church"
1371 , "genericserialize"
1372 , "generic-storable"
1373 , "generic-xml"
1374 , "genetics"
1375 , "GenI"
1376 , "geniconvert"
1377 , "geni-gui"
1378 , "geniserver"
1379 , "geni-util"
1380 , "GenSmsPdu"
1381 , "geodetics"
1382 , "GeoIp"
1383 , "GeomPredicates-SSE"
1384 , "getemx"
1385 , "getflag"
1386 , "ggtsTC"
1387 , "ghc-dup"
1388 , "ghc-events-analyze"
1389 , "ghc-events-parallel"
1390 , "ghc-exactprint"
1391 , "ghci-haskeline"
1392 , "ghci-ng"
1393 , "ghclive"
1394 , "ghc-parmake"
1395 , "ghc-pkg-autofix"
1396 , "ghc-pkg-lib"
1397 , "ghc-server"
1398 , "ghc-syb"
1399 , "GHood"
1400 , "ght"
1401 , "ginsu"
1402 , "gipeda"
1403 , "gist"
1404 , "git-all"
1405 , "git-checklist"
1406 , "git-date"
1407 , "gitdo"
1408 , "git-gpush"
1409 , "gitlib-cross"
1410 , "gitlib-libgit2"
1411 , "gitlib-s3"
1412 , "gitlib-utils"
1413 , "git-monitor"
1414 , "git-repair"
1415 , "gitson"
1416 , "glade"
1417 , "gladexml-accessor"
1418 , "GLFW-OGL"
1419 , "glider-nlp"
1420 , "global"
1421 , "glome-hs"
1422 , "GlomeTrace"
1423 , "GlomeView"
1424 , "gloss-devil"
1425 , "gmap"
1426 , "gmndl"
1427 , "gnome-desktop"
1428 , "gnome-keyring"
1429 , "gnomevfs"
1430 , "g-npm"
1431 , "goa"
1432 , "goatee"
1433 , "goatee-gtk"
1434 , "gofer-prelude"
1435 , "google-drive"
1436 , "google-html5-slide"
1437 , "google-mail-filters"
1438 , "googleplus"
1439 , "GoogleSB"
1440 , "google-search"
1441 , "gopherbot"
1442 , "gpah"
1443 , "GPipe"
1444 , "GPipe-Collada"
1445 , "GPipe-Examples"
1446 , "GPipe-TextureLoad"
1447 , "gps"
1448 , "gps2htmlReport"
1449 , "GPX"
1450 , "gpx-conduit"
1451 , "grapefruit-examples"
1452 , "grapefruit-frp"
1453 , "grapefruit-records"
1454 , "grapefruit-ui"
1455 , "grapefruit-ui-gtk"
1456 , "Graph500"
1457 , "graphbuilder"
1458 , "GraphHammer"
1459 , "GraphHammer-examples"
1460 , "graphicsFormats"
1461 , "graphics-formats-collada"
1462 , "graphicstools"
1463 , "graph-rewriting"
1464 , "graph-rewriting-cl"
1465 , "graph-rewriting-gl"
1466 , "graph-rewriting-lambdascope"
1467 , "graph-rewriting-layout"
1468 , "graph-rewriting-ski"
1469 , "graph-rewriting-strategies"
1470 , "graph-rewriting-trs"
1471 , "graph-rewriting-ww"
1472 , "graphtype"
1473 , "graph-utils"
1474 , "greencard"
1475 , "greencard-lib"
1476 , "greg-client"
1477 , "Grempa"
1478 , "gridland"
1479 , "grm"
1480 , "Grow"
1481 , "GrowlNotify"
1482 , "gruff"
1483 , "gruff-examples"
1484 , "gsl-random"
1485 , "gsl-random-fu"
1486 , "gsmenu"
1487 , "gstreamer"
1488 , "GTALib"
1489 , "gtfs"
1490 , "gtk2hs-cast-glade"
1491 , "gtk2hs-cast-gnomevfs"
1492 , "gtk2hs-cast-gtk"
1493 , "gtk2hs-cast-gtkglext"
1494 , "Gtk2hsGenerics"
1495 , "gtk2hs-rpn"
1496 , "gtk3-mac-integration"
1497 , "gtkglext"
1498 , "GtkGLTV"
1499 , "gtkimageview"
1500 , "gtk-mac-integration"
1501 , "gtkrsync"
1502 , "gtk-serialized-event"
1503 , "gtk-toy"
1504 , "guess-combinator"
1505 , "GuiHaskell"
1506 , "GuiTV"
1507 , "h2048"
1508 , "haar"
1509 , "Hach"
1510 , "hack2-handler-happstack-server"
1511 , "hack2-handler-mongrel2-http"
1512 , "hack2-handler-warp"
1513 , "hack2-interface-wai"
1514 , "hackage2hwn"
1515 , "hackage2twitter"
1516 , "hackage-mirror"
1517 , "hackage-proxy"
1518 , "hackage-server"
1519 , "hackage-sparks"
1520 , "hack-contrib"
1521 , "hack-contrib-press"
1522 , "hackernews"
1523 , "hack-frontend-happstack"
1524 , "hack-handler-epoll"
1525 , "hack-handler-evhttp"
1526 , "hack-handler-fastcgi"
1527 , "hack-handler-happstack"
1528 , "hack-handler-hyena"
1529 , "hack-handler-kibro"
1530 , "hack-handler-simpleserver"
1531 , "HackMail"
1532 , "hack-middleware-cleanpath"
1533 , "hack-middleware-clientsession"
1534 , "hack-middleware-jsonp"
1535 , "hackport"
1536 , "hactor"
1537 , "haddock-leksah"
1538 , "haddocset"
1539 , "haggis"
1540 , "Haggressive"
1541 , "hairy"
1542 , "hakaru"
1543 , "hakismet"
1544 , "hakyll-blaze-templates"
1545 , "hakyll-contrib"
1546 , "hakyll-contrib-links"
1547 , "hakyll-convert"
1548 , "hakyll-elm"
1549 , "hakyll-R"
1550 , "halberd"
1551 , "HaLeX"
1552 , "halfs"
1553 , "halipeto"
1554 , "halive"
1555 , "hampp"
1556 , "hamtmap"
1557 , "hamusic"
1558 , "handle-like"
1559 , "hans"
1560 , "hans-pcap"
1561 , "happindicator"
1562 , "happindicator3"
1563 , "happraise"
1564 , "HAppS-Data"
1565 , "HAppSHelpers"
1566 , "happs-hsp"
1567 , "happs-hsp-template"
1568 , "HAppS-IxSet"
1569 , "HAppS-Server"
1570 , "HAppS-State"
1571 , "happstack-auth"
1572 , "happstack-contrib"
1573 , "happstack-data"
1574 , "happstack-dlg"
1575 , "happstack-facebook"
1576 , "happstack-fay"
1577 , "happstack-foundation"
1578 , "happstack-heist"
1579 , "happstack-helpers"
1580 , "happstack-hsp"
1581 , "happstack-ixset"
1582 , "happstack-monad-peel"
1583 , "happstack-plugins"
1584 , "happstack-state"
1585 , "happstack-util"
1586 , "happstack-yui"
1587 , "happs-tutorial"
1588 , "HAppS-Util"
1589 , "happybara"
1590 , "happybara-webkit"
1591 , "happybara-webkit-server"
1592 , "harchive"
1593 , "hark"
1594 , "HARM"
1595 , "HarmTrace"
1596 , "HarmTrace-Base"
1597 , "has"
1598 , "hascal"
1599 , "hascat"
1600 , "hascat-lib"
1601 , "hascat-setup"
1602 , "hascat-system"
1603 , "Haschoo"
1604 , "HasGP"
1605 , "hash"
1606 , "hashable-generics"
1607 , "hashed-storage"
1608 , "Hashell"
1609 , "hasim"
1610 , "hask"
1611 , "haskanoid"
1612 , "haskarrow"
1613 , "haskeem"
1614 , "haskeline-class"
1615 , "haskell2010"
1616 , "haskell98"
1617 , "haskell-aliyun"
1618 , "haskell-awk"
1619 , "haskell-bcrypt"
1620 , "haskell-brainfuck"
1621 , "haskell-cnc"
1622 , "haskell-course-preludes"
1623 , "haskelldb-connect-hdbc"
1624 , "haskelldb-connect-hdbc-catchio-mtl"
1625 , "haskelldb-connect-hdbc-catchio-tf"
1626 , "haskelldb-connect-hdbc-catchio-transformers"
1627 , "haskelldb-connect-hdbc-lifted"
1628 , "haskelldb-dynamic"
1629 , "haskelldb-hdbc"
1630 , "haskelldb-hdbc-mysql"
1631 , "haskelldb-hdbc-odbc"
1632 , "haskelldb-hdbc-postgresql"
1633 , "haskelldb-hdbc-sqlite3"
1634 , "haskelldb-hsql"
1635 , "haskelldb-hsql-mysql"
1636 , "haskelldb-hsql-odbc"
1637 , "haskelldb-hsql-postgresql"
1638 , "haskelldb-hsql-sqlite3"
1639 , "haskelldb-wx"
1640 , "haskell-docs"
1641 , "haskell-formatter"
1642 , "haskell-ftp"
1643 , "haskell-in-space"
1644 , "haskell-neo4j-client"
1645 , "HaskellNN"
1646 , "Haskelloids"
1647 , "haskell-openflow"
1648 , "haskell-pdf-presenter"
1649 , "haskell-platform-test"
1650 , "haskell-plot"
1651 , "haskell-reflect"
1652 , "haskell-rules"
1653 , "haskellscrabble"
1654 , "haskell-src-meta-mwotton"
1655 , "HaskellTorrent"
1656 , "haskell-type-exts"
1657 , "haskell-tyrant"
1658 , "haskell-xmpp"
1659 , "haskelm"
1660 , "haskgame"
1661 , "haskheap"
1662 , "haskhol-core"
1663 , "hask-home"
1664 , "haskmon"
1665 , "haskoin"
1666 , "haskoin-crypto"
1667 , "haskoin-protocol"
1668 , "haskoin-script"
1669 , "haskoin-util"
1670 , "haskoin-wallet"
1671 , "haskoon"
1672 , "haskoon-httpspec"
1673 , "haskoon-salvia"
1674 , "haskore"
1675 , "haskore-realtime"
1676 , "haskore-supercollider"
1677 , "haskore-synthesizer"
1678 , "haskore-vintage"
1679 , "haslo"
1680 , "hasloGUI"
1681 , "hasparql-client"
1682 , "hastache-aeson"
1683 , "haste-compiler"
1684 , "haste-perch"
1685 , "has-th"
1686 , "hatex-guide"
1687 , "HaTeX-meta"
1688 , "haverer"
1689 , "HaVSA"
1690 , "hawitter"
1691 , "Hawk"
1692 , "haxparse"
1693 , "hayland"
1694 , "Hayoo"
1695 , "hayoo-cli"
1696 , "hback"
1697 , "hbayes"
1698 , "hBDD-CMUBDD"
1699 , "hBDD-CUDD"
1700 , "hbeat"
1701 , "hblas"
1702 , "hblock"
1703 , "h-booru"
1704 , "hburg"
1705 , "HCard"
1706 , "hcheat"
1707 , "hchesslib"
1708 , "HCL"
1709 , "hcron"
1710 , "hCsound"
1711 , "hcube"
1712 , "hcwiid"
1713 , "hdaemonize-buildfix"
1714 , "HDBC-mysql"
1715 , "hdbi"
1716 , "hdbi-conduit"
1717 , "hdbi-postgresql"
1718 , "hdbi-sqlite"
1719 , "hdbi-tests"
1720 , "hDFA"
1721 , "hdigest"
1722 , "hdirect"
1723 , "hdis86"
1724 , "hdiscount"
1725 , "hdm"
1726 , "hdph"
1727 , "hdph-closure"
1728 , "HDRUtils"
1729 , "hecc"
1730 , "Hedi"
1731 , "hedn"
1732 , "heist-aeson"
1733 , "helics"
1734 , "helics-wai"
1735 , "helium"
1736 , "hell"
1737 , "hellage"
1738 , "hellnet"
1739 , "helm"
1740 , "hemkay"
1741 , "hemokit"
1742 , "hen"
1743 , "henet"
1744 , "hepevt"
1745 , "HERA"
1746 , "herbalizer"
1747 , "her-lexer"
1748 , "her-lexer-parsec"
1749 , "Hermes"
1750 , "hermit"
1751 , "hermit-syb"
1752 , "herringbone"
1753 , "herringbone-embed"
1754 , "herringbone-wai"
1755 , "hesql"
1756 , "hetris"
1757 , "heukarya"
1758 , "hevolisa"
1759 , "hevolisa-dph"
1760 , "hexpat-iteratee"
1761 , "hexpat-pickle-generic"
1762 , "hexquote"
1763 , "hF2"
1764 , "hfann"
1765 , "hfd"
1766 , "hfiar"
1767 , "hfractal"
1768 , "hfsevents"
1769 , "hfusion"
1770 , "hgalib"
1771 , "HGamer3D"
1772 , "HGamer3D-API"
1773 , "HGamer3D-Audio"
1774 , "HGamer3D-CAudio-Binding"
1775 , "HGamer3D-CEGUI-Binding"
1776 , "HGamer3D-Enet-Binding"
1777 , "HGamer3D-Graphics3D"
1778 , "HGamer3D-GUI"
1779 , "HGamer3D-InputSystem"
1780 , "HGamer3D-Network"
1781 , "HGamer3D-Ogre-Binding"
1782 , "HGamer3D-OIS-Binding"
1783 , "HGamer3D-SDL2-Binding"
1784 , "HGamer3D-SFML-Binding"
1785 , "HGamer3D-WinEvent"
1786 , "HGamer3D-Wire"
1787 , "hg-buildpackage"
1788 , "hgen"
1789 , "hgeometric"
1790 , "hgithub"
1791 , "HGL"
1792 , "hgom"
1793 , "h-gpgme"
1794 , "HGraphStorage"
1795 , "hharp"
1796 , "HHDL"
1797 , "hiccup"
1798 , "hichi"
1799 , "hieraclus"
1800 , "hierarchical-clustering-diagrams"
1801 , "hiernotify"
1802 , "Hieroglyph"
1803 , "HiggsSet"
1804 , "higherorder"
1805 , "highWaterMark"
1806 , "himg"
1807 , "himpy"
1808 , "hinduce-classifier"
1809 , "hinduce-classifier-decisiontree"
1810 , "hinduce-examples"
1811 , "hinvaders"
1812 , "hinze-streams"
1813 , "hipbot"
1814 , "hircules"
1815 , "hirt"
1816 , "hissmetrics"
1817 , "historian"
1818 , "hist-pl"
1819 , "hist-pl-fusion"
1820 , "hist-pl-lmf"
1821 , "hjs"
1822 , "HJVM"
1823 , "hlatex"
1824 , "hlbfgsb"
1825 , "hlcm"
1826 , "HLearn-algebra"
1827 , "HLearn-datastructures"
1828 , "hledger-chart"
1829 , "hledger-vty"
1830 , "hlibev"
1831 , "hlibfam"
1832 , "HListPP"
1833 , "hlogger"
1834 , "HLogger"
1835 , "hly"
1836 , "HMap"
1837 , "hmark"
1838 , "hmarkup"
1839 , "hmatrix-banded"
1840 , "hmatrix-gsl-stats"
1841 , "hmatrix-quadprogpp"
1842 , "hmatrix-static"
1843 , "hmatrix-syntax"
1844 , "hmatrix-tests"
1845 , "hmeap"
1846 , "hmeap-utils"
1847 , "hmenu"
1848 , "hmk"
1849 , "HMM"
1850 , "hmm-hmatrix"
1851 , "hMollom"
1852 , "hmp3"
1853 , "Hmpf"
1854 , "hmpfr"
1855 , "hmumps"
1856 , "HNM"
1857 , "hnn"
1858 , "hoauth"
1859 , "hob"
1860 , "hobbes"
1861 , "hobbits"
1862 , "HODE"
1863 , "hofix-mtl"
1864 , "hog"
1865 , "hogg"
1866 , "hogre"
1867 , "hogre-examples"
1868 , "hois"
1869 , "hole"
1870 , "holey-format"
1871 , "Holumbus-Distribution"
1872 , "Holumbus-MapReduce"
1873 , "Holumbus-Searchengine"
1874 , "Holumbus-Storage"
1875 , "homeomorphic"
1876 , "hommage"
1877 , "hommage-ds"
1878 , "HongoDB"
1879 , "honi"
1880 , "hoodie"
1881 , "hoodle"
1882 , "hoodle-builder"
1883 , "hoodle-core"
1884 , "hoodle-extra"
1885 , "hoodle-parser"
1886 , "hoodle-publish"
1887 , "hoodle-render"
1888 , "hoodle-types"
1889 , "hood-off"
1890 , "hoovie"
1891 , "hopencc"
1892 , "hopencl"
1893 , "hOpenPGP"
1894 , "hopfield"
1895 , "hoq"
1896 , "hosts-server"
1897 , "hotswap"
1898 , "hp2any-core"
1899 , "hp2any-graph"
1900 , "hp2any-manager"
1901 , "hpage"
1902 , "hpapi"
1903 , "hpaste"
1904 , "hpasteit"
1905 , "HPath"
1906 , "hpc-coveralls"
1907 , "hpc-tracer"
1908 , "hPDB-examples"
1909 , "HPDF"
1910 , "hplayground"
1911 , "hplaylist"
1912 , "HPlot"
1913 , "hpodder"
1914 , "HPong"
1915 , "hprotoc-fork"
1916 , "hps-cairo"
1917 , "hpygments"
1918 , "hpylos"
1919 , "hR"
1920 , "hranker"
1921 , "HRay"
1922 , "Hricket"
1923 , "HROOT"
1924 , "HROOT-core"
1925 , "HROOT-graf"
1926 , "HROOT-hist"
1927 , "HROOT-io"
1928 , "HROOT-math"
1929 , "hs2bf"
1930 , "hs2dot"
1931 , "Hs2lib"
1932 , "hsbackup"
1933 , "hsc2hs"
1934 , "hsc3-cairo"
1935 , "hsc3-data"
1936 , "hsc3-forth"
1937 , "hsc3-graphs"
1938 , "hsc3-lang"
1939 , "hsc3-lisp"
1940 , "hsc3-plot"
1941 , "hsc3-rec"
1942 , "hsc3-server"
1943 , "hsc3-unsafe"
1944 , "hscamwire"
1945 , "hs-carbon-examples"
1946 , "hscassandra"
1947 , "hs-cdb"
1948 , "hsclock"
1949 , "hscurses-fish-ex"
1950 , "hsdip"
1951 , "hsdns-cache"
1952 , "hs-dotnet"
1953 , "Hsed"
1954 , "hsfacter"
1955 , "HSFFIG"
1956 , "hs-ffmpeg"
1957 , "hs-fltk"
1958 , "hs-gchart"
1959 , "hs-GeoIP"
1960 , "HSGEP"
1961 , "hsgnutls"
1962 , "hsgnutls-yj"
1963 , "hsgsom"
1964 , "HsHaruPDF"
1965 , "HSHHelpers"
1966 , "HsHyperEstraier"
1967 , "hsignal"
1968 , "hSimpleDB"
1969 , "hs-java"
1970 , "hs-json-rpc"
1971 , "HsJudy"
1972 , "hskeleton"
1973 , "hslackbuilder"
1974 , "hslibsvm"
1975 , "hslogger4j"
1976 , "hs-logo"
1977 , "hslogstash"
1978 , "hsmagick"
1979 , "HSmarty"
1980 , "hs-mesos"
1981 , "Hsmtlib"
1982 , "hsmtpclient"
1983 , "hsndfile-storablevector"
1984 , "hsnock"
1985 , "hs-nombre-generator"
1986 , "hsns"
1987 , "hsntp"
1988 , "hsoptions"
1989 , "HSoundFile"
1990 , "hsparql"
1991 , "HsParrot"
1992 , "hsp-cgi"
1993 , "hspear"
1994 , "hspec-experimental"
1995 , "hspec-shouldbe"
1996 , "HsPerl5"
1997 , "hs-pgms"
1998 , "hs-pkpass"
1999 , "hspread"
2000 , "hspresent"
2001 , "hsprocess"
2002 , "hsql-mysql"
2003 , "hsqml-datamodel"
2004 , "hsqml-demo-morris"
2005 , "hsqml-demo-samples"
2006 , "hsqml-morris"
2007 , "hsSqlite3"
2008 , "HsSVN"
2009 , "hstatistics"
2010 , "hstats"
2011 , "hstest"
2012 , "hstidy"
2013 , "hstorchat"
2014 , "hstradeking"
2015 , "HStringTemplateHelpers"
2016 , "hs-twitter"
2017 , "hs-twitterarchiver"
2018 , "hstyle"
2019 , "hstzaar"
2020 , "hsubconvert"
2021 , "hs-vcard"
2022 , "HSvm"
2023 , "hswip"
2024 , "hsx"
2025 , "hsXenCtrl"
2026 , "hsx-jmacro"
2027 , "hsx-xhtml"
2028 , "hsyscall"
2029 , "hszephyr"
2030 , "HTab"
2031 , "hTalos"
2032 , "hTensor"
2033 , "HTicTacToe"
2034 , "html-entities"
2035 , "htoml"
2036 , "htsn-import"
2037 , "http-client-request-modifiers"
2038 , "http-conduit-browser"
2039 , "http-conduit-downloader"
2040 , "http-enumerator"
2041 , "http-monad"
2042 , "http-proxy"
2043 , "https-everywhere-rules"
2044 , "http-shed"
2045 , "HTTP-Simple"
2046 , "httpspec"
2047 , "http-test"
2048 , "htune"
2049 , "hubris"
2050 , "hugs2yc"
2051 , "hulk"
2052 , "hums"
2053 , "HUnit-Diff"
2054 , "hunit-gui"
2055 , "HUnit-Plus"
2056 , "hunit-rematch"
2057 , "hunt-searchengine"
2058 , "hurdle"
2059 , "husk-scheme"
2060 , "husk-scheme-libs"
2061 , "husky"
2062 , "hutton"
2063 , "huzzy"
2064 , "hVOIDP"
2065 , "hws"
2066 , "HXMPP"
2067 , "hxmppc"
2068 , "hxournal"
2069 , "HXQ"
2070 , "hxt-binary"
2071 , "hxt-filter"
2072 , "hxthelper"
2073 , "hxweb"
2074 , "hybrid"
2075 , "hydra-hs"
2076 , "hydrogen-cli-args"
2077 , "hydrogen-data"
2078 , "hydrogen-parsing"
2079 , "hydrogen-prelude"
2080 , "hydrogen-prelude-parsec"
2081 , "hydrogen-util"
2082 , "hyena"
2083 , "hylolib"
2084 , "hylotab"
2085 , "hyloutils"
2086 , "hyperdrive"
2087 , "hyperpublic"
2088 , "hypher"
2089 , "i18n"
2090 , "iban"
2091 , "ideas"
2092 , "ideas-math"
2093 , "ide-backend-server"
2094 , "idiii"
2095 , "idna2008"
2096 , "IDynamic"
2097 , "ieee-utils"
2098 , "iException"
2099 , "IFS"
2100 , "ige-mac-integration"
2101 , "igraph"
2102 , "ihaskell"
2103 , "ihaskell-aeson"
2104 , "ihaskell-basic"
2105 , "ihaskell-blaze"
2106 , "ihaskell-charts"
2107 , "ihaskell-display"
2108 , "ihaskell-hatex"
2109 , "ihaskell-juicypixels"
2110 , "ihaskell-magic"
2111 , "ihaskell-parsec"
2112 , "ihaskell-plot"
2113 , "ihaskell-rlangqq"
2114 , "ihttp"
2115 , "illuminate"
2116 , "imagepaste"
2117 , "imbib"
2118 , "imgurder"
2119 , "imm"
2120 , "imparse"
2121 , "ImperativeHaskell"
2122 , "implicit"
2123 , "improve"
2124 , "INblobs"
2125 , "inch"
2126 , "include-file"
2127 , "incremental-computing"
2128 , "incremental-sat-solver"
2129 , "increments"
2130 , "index-core"
2131 , "indices"
2132 , "infer-upstream"
2133 , "infinity"
2134 , "infix"
2135 , "InfixApplicative"
2136 , "inflist"
2137 , "informative"
2138 , "inilist"
2139 , "instant-zipper"
2140 , "integer-pure"
2141 , "intel-aes"
2142 , "interleavableGen"
2143 , "interleavableIO"
2144 , "internetmarke"
2145 , "interpolatedstring-qq"
2146 , "interpolatedstring-qq-mwotton"
2147 , "intricacy"
2148 , "intset"
2149 , "IOR"
2150 , "io-reactive"
2151 , "IORefCAS"
2152 , "iotransaction"
2153 , "ipatch"
2154 , "ipc"
2155 , "ipopt-hs"
2156 , "iptables-helpers"
2157 , "iptadmin"
2158 , "Irc"
2159 , "ircbouncer"
2160 , "ireal"
2161 , "IrrHaskell"
2162 , "isevaluated"
2163 , "ismtp"
2164 , "iteratee"
2165 , "iteratee-compress"
2166 , "iteratee-parsec"
2167 , "iteratee-stm"
2168 , "iterIO"
2169 , "iterio-server"
2170 , "iter-stats"
2171 , "ivor"
2172 , "ivory"
2173 , "ivory-opts"
2174 , "ivory-quickcheck"
2175 , "ivory-stdlib"
2176 , "ivy-web"
2177 , "ixdopp"
2178 , "ixset-typed"
2179 , "iyql"
2180 , "j2hs"
2181 , "jack-bindings"
2182 , "jackminimix"
2183 , "JackMiniMix"
2184 , "jalla"
2185 , "jammittools"
2186 , "jarfind"
2187 , "java-bridge"
2188 , "java-bridge-extras"
2189 , "java-reflect"
2190 , "javasf"
2191 , "Javasf"
2192 , "javav"
2193 , "Javav"
2194 , "jespresso"
2195 , "jobqueue"
2196 , "join"
2197 , "joinlist"
2198 , "jonathanscard"
2199 , "jort"
2200 , "jsc"
2201 , "JsContracts"
2202 , "js-good-parts"
2203 , "jsmw"
2204 , "json2"
2205 , "json2-hdbc"
2206 , "json-b"
2207 , "JSONb"
2208 , "JSON-Combinator"
2209 , "JSON-Combinator-Examples"
2210 , "json-enumerator"
2211 , "JsonGrammar"
2212 , "json-qq"
2213 , "jsonresume"
2214 , "json-rpc"
2215 , "json-tools"
2216 , "jspath"
2217 , "judy"
2218 , "JuicyPixels-repa"
2219 , "JunkDB-driver-gdbm"
2220 , "JYU-Utils"
2221 , "kangaroo"
2222 , "kansas-comet"
2223 , "kansas-lava"
2224 , "kansas-lava-cores"
2225 , "kansas-lava-papilio"
2226 , "kansas-lava-shake"
2227 , "katt"
2228 , "keera-hails-mvc-model-lightmodel"
2229 , "keera-hails-reactive-fs"
2230 , "keera-posture"
2231 , "keiretsu"
2232 , "Ketchup"
2233 , "kevin"
2234 , "keyring"
2235 , "keystore"
2236 , "kibro"
2237 , "kicad-data"
2238 , "kickass-torrents-dump-parser"
2239 , "KiCS"
2240 , "KiCS-debugger"
2241 , "KiCS-prophecy"
2242 , "kif-parser"
2243 , "kit"
2244 , "kmeans-par"
2245 , "koellner-phonetic"
2246 , "Konf"
2247 , "korfu"
2248 , "kqueue"
2249 , "kure-your-boilerplate"
2250 , "KyotoCabinet"
2251 , "labeled-graph"
2252 , "labyrinth"
2253 , "labyrinth-server"
2254 , "laika"
2255 , "lambda2js"
2256 , "lambdaBase"
2257 , "lambdabot-utils"
2258 , "lambda-bridge"
2259 , "LambdaCalculator"
2260 , "lambdacat"
2261 , "lambdacube"
2262 , "lambdacube-bullet"
2263 , "lambdacube-engine"
2264 , "lambdacube-examples"
2265 , "lambdacube-samples"
2266 , "lambda-devs"
2267 , "lambdaFeed"
2268 , "LambdaINet"
2269 , "lambdaLit"
2270 , "LambdaPrettyQuote"
2271 , "LambdaShell"
2272 , "lambda-toolbox"
2273 , "lambdatwit"
2274 , "lambdiff"
2275 , "lame-tester"
2276 , "language-bash"
2277 , "language-boogie"
2278 , "language-c-comments"
2279 , "language-c-inline"
2280 , "language-eiffel"
2281 , "language-go"
2282 , "language-java-classfile"
2283 , "language-mixal"
2284 , "language-objc"
2285 , "language-puppet"
2286 , "language-python-colour"
2287 , "language-sh"
2288 , "language-spelling"
2289 , "language-sqlite"
2290 , "language-thrift"
2291 , "Lastik"
2292 , "lat"
2293 , "latest-npm-version"
2294 , "Lattices"
2295 , "layers"
2296 , "layout"
2297 , "layout-bootstrap"
2298 , "lazyarray"
2299 , "lazysplines"
2300 , "l-bfgs-b"
2301 , "lcs"
2302 , "ldap-client"
2303 , "ldif"
2304 , "leaf"
2305 , "leaky"
2306 , "learn-physics"
2307 , "learn-physics-examples"
2308 , "leksah"
2309 , "Level0"
2310 , "leveldb-haskell-fork"
2311 , "levmar-chart"
2312 , "lgtk"
2313 , "lha"
2314 , "lhae"
2315 , "lhe"
2316 , "LibClang"
2317 , "libcspm"
2318 , "libexpect"
2319 , "libGenI"
2320 , "libhbb"
2321 , "libjenkins"
2322 , "libltdl"
2323 , "liboleg"
2324 , "libpafe"
2325 , "libpq"
2326 , "libssh2-conduit"
2327 , "libsystemd-daemon"
2328 , "libvirt-hs"
2329 , "libxml"
2330 , "libxslt"
2331 , "lifter"
2332 , "lighttpd-conf"
2333 , "lighttpd-conf-qq"
2334 , "lilypond"
2335 , "Limit"
2336 , "limp-cbc"
2337 , "lin-alg"
2338 , "linear-algebra-cblas"
2339 , "linear-maps"
2340 , "linearscan"
2341 , "linearscan-hoopl"
2342 , "LinearSplit"
2343 , "LinkChecker"
2344 , "linkchk"
2345 , "linkcore"
2346 , "linux-blkid"
2347 , "linux-kmod"
2348 , "linux-perf"
2349 , "linux-ptrace"
2350 , "lio-eci11"
2351 , "lio-simple"
2352 , "liquid-fixpoint"
2353 , "liquidhaskell"
2354 , "listlike-instances"
2355 , "list-t-html-parser"
2356 , "ListTree"
2357 , "literals"
2358 , "live-sequencer"
2359 , "ll-picosat"
2360 , "llsd"
2361 , "llvm-ffi"
2362 , "llvm-general-quote"
2363 , "llvm-ht"
2364 , "local-search"
2365 , "loch"
2366 , "log2json"
2367 , "log-effect"
2368 , "logic-classes"
2369 , "LogicGrowsOnTrees"
2370 , "LogicGrowsOnTrees-MPI"
2371 , "LogicGrowsOnTrees-network"
2372 , "LogicGrowsOnTrees-processes"
2373 , "lojban"
2374 , "lojbanParser"
2375 , "lojbanXiragan"
2376 , "lojysamban"
2377 , "loli"
2378 , "loop-effin"
2379 , "loopy"
2380 , "lord"
2381 , "loris"
2382 , "lostcities"
2383 , "lscabal"
2384 , "L-seed"
2385 , "LslPlus"
2386 , "ls-usb"
2387 , "lsystem"
2388 , "luachunk"
2389 , "luautils"
2390 , "lucienne"
2391 , "Lucu"
2392 , "lui"
2393 , "luka"
2394 , "luthor"
2395 , "lvish"
2396 , "lvmlib"
2397 , "lye"
2398 , "maam"
2399 , "mage"
2400 , "magic"
2401 , "MagicHaskeller"
2402 , "magma"
2403 , "mahoro"
2404 , "majordomo"
2405 , "majority"
2406 , "manatee"
2407 , "manatee-anything"
2408 , "manatee-browser"
2409 , "manatee-core"
2410 , "manatee-curl"
2411 , "manatee-editor"
2412 , "manatee-filemanager"
2413 , "manatee-imageviewer"
2414 , "manatee-mplayer"
2415 , "manatee-pdfviewer"
2416 , "manatee-processmanager"
2417 , "manatee-reader"
2418 , "manatee-template"
2419 , "manatee-terminal"
2420 , "manatee-welcome"
2421 , "mandulia"
2422 , "mangopay"
2423 , "manifolds"
2424 , "marionetta"
2425 , "markdown2svg"
2426 , "markdown-kate"
2427 , "markdown-pap"
2428 , "markov-processes"
2429 , "markup-preview"
2430 , "marmalade-upload"
2431 , "marquise"
2432 , "marxup"
2433 , "masakazu-bot"
2434 , "matchers"
2435 , "mathblog"
2436 , "mathgenealogy"
2437 , "mathlink"
2438 , "matlab"
2439 , "matsuri"
2440 , "maude"
2441 , "maxent"
2442 , "maxsharing"
2443 , "maybench"
2444 , "MaybeT-monads-tf"
2445 , "MaybeT-transformers"
2446 , "MazesOfMonad"
2447 , "mbox-tools"
2448 , "MC-Fold-DP"
2449 , "mcmc-samplers"
2450 , "mdcat"
2451 , "Measure"
2452 , "mecab"
2453 , "mediawiki"
2454 , "mediawiki2latex"
2455 , "mega-sdist"
2456 , "melody"
2457 , "memo-sqlite"
2458 , "MetaObject"
2459 , "meta-par-accelerate"
2460 , "metaplug"
2461 , "metric"
2462 , "Metrics"
2463 , "metronome"
2464 , "MFlow"
2465 , "Mhailist"
2466 , "MHask"
2467 , "microformats2-parser"
2468 , "mida"
2469 , "midisurface"
2470 , "mighttpd"
2471 , "milena"
2472 , "mime-directory"
2473 , "mime-string"
2474 , "minesweeper"
2475 , "MiniAgda"
2476 , "miniball"
2477 , "miniforth"
2478 , "minimung"
2479 , "minioperational"
2480 , "miniplex"
2481 , "minirotate"
2482 , "ministg"
2483 , "mirror-tweet"
2484 , "MissingPy"
2485 , "missing-py2"
2486 , "mix-arrows"
2487 , "mkbndl"
2488 , "mlist"
2489 , "ml-w"
2490 , "mmtl"
2491 , "mmtl-base"
2492 , "moan"
2493 , "modelicaparser"
2494 , "modsplit"
2495 , "modular-prelude"
2496 , "modular-prelude-classy"
2497 , "module-management"
2498 , "mohws"
2499 , "monad-abort-fd"
2500 , "monadacme"
2501 , "monad-atom"
2502 , "monad-atom-simple"
2503 , "monad-bool"
2504 , "MonadCatchIO-mtl-foreign"
2505 , "MonadCatchIO-transformers-foreign"
2506 , "monad-exception"
2507 , "monadiccp"
2508 , "monadiccp-gecode"
2509 , "monad-interleave"
2510 , "MonadLab"
2511 , "monad-levels"
2512 , "monad-lrs"
2513 , "monad-memo"
2514 , "monad-mersenne-random"
2515 , "monad-ran"
2516 , "MonadRandomLazy"
2517 , "monad-stlike-io"
2518 , "monad-stlike-stm"
2519 , "monad-tx"
2520 , "monad-unify"
2521 , "monarch"
2522 , "Monaris"
2523 , "Monatron"
2524 , "Monatron-IO"
2525 , "mongodb-queue"
2526 , "mongrel2-handler"
2527 , "Monocle"
2528 , "mono-foldable"
2529 , "monoid-owns"
2530 , "monoidplus"
2531 , "monoids"
2532 , "monte-carlo"
2533 , "moo"
2534 , "morfette"
2535 , "morfeusz"
2536 , "mosaico-lib"
2537 , "mount"
2538 , "mp3decoder"
2539 , "mpdmate"
2540 , "mpppc"
2541 , "mpretty"
2542 , "mprover"
2543 , "mps"
2544 , "mpvguihs"
2545 , "mqtt-hs"
2546 , "msgpack-idl"
2547 , "mtgoxapi"
2548 , "mtl-tf"
2549 , "mtlx"
2550 , "mtp"
2551 , "mudbath"
2552 , "multifocal"
2553 , "multipass"
2554 , "multiplate-simplified"
2555 , "multirec-alt-deriver"
2556 , "multirec-binary"
2557 , "multisetrewrite"
2558 , "murder"
2559 , "murmurhash3"
2560 , "musicbrainz-email"
2561 , "music-graphics"
2562 , "music-parts"
2563 , "music-preludes"
2564 , "music-score"
2565 , "music-sibelius"
2566 , "music-suite"
2567 , "music-util"
2568 , "musicxml"
2569 , "mustache2hs"
2570 , "mutable-iter"
2571 , "mvclient"
2572 , "mvc-updates"
2573 , "myo"
2574 , "mysnapsession"
2575 , "mysnapsession-example"
2576 , "mysql-simple-quasi"
2577 , "mysql-simple-typed"
2578 , "myTestlll"
2579 , "mzv"
2580 , "nagios-plugin-ekg"
2581 , "named-lock"
2582 , "nanoAgda"
2583 , "nano-cryptr"
2584 , "nanocurses"
2585 , "nano-hmac"
2586 , "nano-md5"
2587 , "nanomsg-haskell"
2588 , "narc"
2589 , "nats-queue"
2590 , "natural-number"
2591 , "neat"
2592 , "needle"
2593 , "nerf"
2594 , "nero"
2595 , "nero-wai"
2596 , "nero-warp"
2597 , "netcore"
2598 , "netlines"
2599 , "NetSNMP"
2600 , "netspec"
2601 , "nettle"
2602 , "nettle-frp"
2603 , "nettle-netkit"
2604 , "nettle-openflow"
2605 , "network-address"
2606 , "network-anonymous-i2p"
2607 , "network-builder"
2608 , "network-bytestring"
2609 , "network-connection"
2610 , "network-house"
2611 , "network-minihttp"
2612 , "network-rpca"
2613 , "network-server"
2614 , "network-simple-tls"
2615 , "network-topic-models"
2616 , "network-transport-amqp"
2617 , "network-websocket"
2618 , "newports"
2619 , "newsynth"
2620 , "newt"
2621 , "newtype-th"
2622 , "NGrams"
2623 , "nibblestring"
2624 , "nikepub"
2625 , "Ninjas"
2626 , "nitro"
2627 , "nixos-types"
2628 , "nkjp"
2629 , "nm"
2630 , "nme"
2631 , "nntp"
2632 , "noise"
2633 , "Nomyx"
2634 , "Nomyx-Core"
2635 , "Nomyx-Language"
2636 , "Nomyx-Rules"
2637 , "Nomyx-Web"
2638 , "nondeterminism"
2639 , "NonEmptyList"
2640 , "noodle"
2641 , "NoSlow"
2642 , "not-gloss-examples"
2643 , "notmuch-haskell"
2644 , "notmuch-web"
2645 , "np-linear"
2646 , "nptools"
2647 , "nthable"
2648 , "null-canvas"
2649 , "NumberSieves"
2650 , "numerals"
2651 , "numerals-base"
2652 , "numeric-qq"
2653 , "nums"
2654 , "Nussinov78"
2655 , "nvim-hs"
2656 , "NXT"
2657 , "NXTDSL"
2658 , "nymphaea"
2659 , "oberon0"
2660 , "obj"
2661 , "Object"
2662 , "ObjectIO"
2663 , "octopus"
2664 , "oculus"
2665 , "ofx"
2666 , "OGL"
2667 , "ohloh-hs"
2668 , "oi"
2669 , "ois-input-manager"
2670 , "omaketex"
2671 , "omega"
2672 , "Omega"
2673 , "omnicodec"
2674 , "on-a-horse"
2675 , "one-liner"
2676 , "oneormore"
2677 , "onu-course"
2678 , "OpenAFP"
2679 , "OpenAFP-Utils"
2680 , "OpenCL"
2681 , "OpenCLRaw"
2682 , "opencv-raw"
2683 , "openexchangerates"
2684 , "openflow"
2685 , "OpenGLCheck"
2686 , "opengles"
2687 , "openid"
2688 , "open-pandoc"
2689 , "openpgp-Crypto"
2690 , "openpgp-crypto-api"
2691 , "OpenSCAD"
2692 , "openssh-github-keys"
2693 , "opentheory-char"
2694 , "open-union"
2695 , "OpenVG"
2696 , "OpenVGRaw"
2697 , "open-witness"
2698 , "Operads"
2699 , "optimusprime"
2700 , "OrchestrateDB"
2701 , "orchid"
2702 , "orchid-demo"
2703 , "order-maintenance"
2704 , "orgmode-parse"
2705 , "origami"
2706 , "OSM"
2707 , "osm-download"
2708 , "ot"
2709 , "package-vt"
2710 , "packedstring"
2711 , "PageIO"
2712 , "panda"
2713 , "PandocAgda"
2714 , "pandoc-unlit"
2715 , "papillon"
2716 , "pappy"
2717 , "paragon"
2718 , "Paraiso"
2719 , "parallel-tasks"
2720 , "parameterized-data"
2721 , "parco"
2722 , "parco-attoparsec"
2723 , "parconc-examples"
2724 , "parco-parsec"
2725 , "Parry"
2726 , "parsec2"
2727 , "parse-help"
2728 , "parsely"
2729 , "parser-helper"
2730 , "parsestar"
2731 , "partial-lens"
2732 , "partly"
2733 , "passage"
2734 , "pastis"
2735 , "pasty"
2736 , "Pathfinder"
2737 , "pathfindingcore"
2738 , "patterns"
2739 , "paypal-api"
2740 , "pb"
2741 , "PCLT"
2742 , "PCLT-DB"
2743 , "pdynload"
2744 , "peakachu"
2745 , "pec"
2746 , "peg"
2747 , "penny"
2748 , "penny-bin"
2749 , "penny-lib"
2750 , "peparser"
2751 , "perdure"
2752 , "PerfectHash"
2753 , "perm"
2754 , "permute"
2755 , "PermuteEffects"
2756 , "persistent-hssqlppp"
2757 , "persistent-map"
2758 , "persistent-protobuf"
2759 , "pesca"
2760 , "peyotls"
2761 , "pez"
2762 , "pgdl"
2763 , "pg-harness"
2764 , "pg-harness-server"
2765 , "pgsql-simple"
2766 , "pgstream"
2767 , "phasechange"
2768 , "phash"
2769 , "phone-push"
2770 , "phooey"
2771 , "photoname"
2772 , "phraskell"
2773 , "Phsu"
2774 , "phybin"
2775 , "pianola"
2776 , "pi-calculus"
2777 , "picologic"
2778 , "piet"
2779 , "piki"
2780 , "Pipe"
2781 , "pipes-cereal-plus"
2782 , "pipes-conduit"
2783 , "pipes-network-tls"
2784 , "pipes-p2p-examples"
2785 , "pisigma"
2786 , "pit"
2787 , "pkggraph"
2788 , "planar-graph"
2789 , "plat"
2790 , "plivo"
2791 , "PlslTools"
2792 , "plugins"
2793 , "plugins-auto"
2794 , "plugins-multistage"
2795 , "plumbers"
2796 , "png-file"
2797 , "pngload"
2798 , "pngload-fixed"
2799 , "pocket-dns"
2800 , "pointless-haskell"
2801 , "pointless-lenses"
2802 , "pointless-rewrite"
2803 , "polh-lexicon"
2804 , "polyseq"
2805 , "polytypeable"
2806 , "polytypeable-utils"
2807 , "pontarius-mediaserver"
2808 , "pontarius-xmpp"
2809 , "pontarius-xpmn"
2810 , "pool"
2811 , "pool-conduit"
2812 , "popenhs"
2813 , "poppler"
2814 , "porte"
2815 , "porter"
2816 , "ports"
2817 , "posix-acl"
2818 , "posix-waitpid"
2819 , "PostgreSQL"
2820 , "postgresql-orm"
2821 , "postgresql-schema"
2822 , "postgresql-simple-typed"
2823 , "postgresql-typed"
2824 , "postgrest"
2825 , "postie"
2826 , "postmaster"
2827 , "powermate"
2828 , "powerpc"
2829 , "pqc"
2830 , "pqueue-mtl"
2831 , "practice-room"
2832 , "precis"
2833 , "prefork"
2834 , "pregame"
2835 , "prelude-generalize"
2836 , "prelude-plus"
2837 , "preprocess-haskell"
2838 , "press"
2839 , "primula-board"
2840 , "primula-bot"
2841 , "printf-mauke"
2842 , "Printf-TH"
2843 , "PriorityChansConverger"
2844 , "priority-queue"
2845 , "ProbabilityMonads"
2846 , "proc"
2847 , "processing"
2848 , "process-iterio"
2849 , "process-leksah"
2850 , "process-listlike"
2851 , "process-progress"
2852 , "process-qq"
2853 , "procrastinating-structure"
2854 , "procrastinating-variable"
2855 , "procstat"
2856 , "prof2dot"
2857 , "profunctor-extras"
2858 , "progress"
2859 , "progressbar"
2860 , "progression"
2861 , "progressive"
2862 , "proj4-hs-bindings"
2863 , "prolog"
2864 , "prolog-graph"
2865 , "prolog-graph-lib"
2866 , "propane"
2867 , "Proper"
2868 , "proplang"
2869 , "protobuf-native"
2870 , "protocol-buffers-descriptor-fork"
2871 , "protocol-buffers-fork"
2872 , "prove-everywhere-server"
2873 , "proxy-kindness"
2874 , "pub"
2875 , "publicsuffixlistcreate"
2876 , "pubnub"
2877 , "pubsub"
2878 , "puffytools"
2879 , "Pugs"
2880 , "pugs-compat"
2881 , "pugs-DrIFT"
2882 , "pugs-hsregex"
2883 , "pugs-HsSyck"
2884 , "punkt"
2885 , "Pup-Events"
2886 , "Pup-Events-Demo"
2887 , "puppetresources"
2888 , "purescript"
2889 , "pushme"
2890 , "push-notify"
2891 , "push-notify-ccs"
2892 , "push-notify-general"
2893 , "putlenses"
2894 , "puzzle-draw"
2895 , "puzzle-draw-cmdline"
2896 , "pvd"
2897 , "python-pickle"
2898 , "qd"
2899 , "qd-vec"
2900 , "qhull-simple"
2901 , "QIO"
2902 , "quantum-arrow"
2903 , "qudb"
2904 , "quenya-verb"
2905 , "querystring-pickle"
2906 , "queuelike"
2907 , "QuickAnnotate"
2908 , "QuickCheck-GenT"
2909 , "quickcheck-poly"
2910 , "quickcheck-regex"
2911 , "quickcheck-relaxng"
2912 , "quickcheck-rematch"
2913 , "quickpull"
2914 , "quickset"
2915 , "Quickson"
2916 , "quicktest"
2917 , "quoridor-hs"
2918 , "rabocsv2qif"
2919 , "rad"
2920 , "radium"
2921 , "radium-formula-parser"
2922 , "rados-haskell"
2923 , "rail-compiler-editor"
2924 , "rainbow-tests"
2925 , "Raincat"
2926 , "rakhana"
2927 , "ralist"
2928 , "rallod"
2929 , "random-access-list"
2930 , "RandomDotOrg"
2931 , "random-eff"
2932 , "random-effin"
2933 , "random-hypergeometric"
2934 , "random-stream"
2935 , "rand-vars"
2936 , "rangemin"
2937 , "range-space"
2938 , "Ranka"
2939 , "raven-haskell"
2940 , "raven-haskell-scotty"
2941 , "rbr"
2942 , "rdf4h"
2943 , "rdioh"
2944 , "reaction-logic"
2945 , "reactive"
2946 , "reactive-bacon"
2947 , "reactive-balsa"
2948 , "reactive-banana-sdl"
2949 , "reactive-banana-threepenny"
2950 , "reactive-fieldtrip"
2951 , "reactive-glut"
2952 , "reactive-thread"
2953 , "reactor"
2954 , "really-simple-xml-parser"
2955 , "reasonable-lens"
2956 , "record-aeson"
2957 , "record-gl"
2958 , "record-preprocessor"
2959 , "records"
2960 , "records-th"
2961 , "redHandlers"
2962 , "ref"
2963 , "Ref"
2964 , "Referees"
2965 , "refh"
2966 , "reflection-extras"
2967 , "regex-deriv"
2968 , "regex-dfa"
2969 , "regex-genex"
2970 , "regex-parsec"
2971 , "regex-pderiv"
2972 , "regexp-tries"
2973 , "regexqq"
2974 , "regex-tdfa-utf8"
2975 , "regex-tre"
2976 , "regex-xmlschema"
2977 , "regional-pointers"
2978 , "regions"
2979 , "regions-monadsfd"
2980 , "regions-monadstf"
2981 , "regions-mtl"
2982 , "regular-extras"
2983 , "regular-web"
2984 , "reheat"
2985 , "rei"
2986 , "reified-records"
2987 , "reify"
2988 , "remote"
2989 , "remote-debugger"
2990 , "remotion"
2991 , "reorderable"
2992 , "repa-array"
2993 , "repa-bytestring"
2994 , "repa-flow"
2995 , "repa-plugin"
2996 , "repa-series"
2997 , "repa-v4l2"
2998 , "repl"
2999 , "RepLib"
3000 , "repo-based-blog"
3001 , "repr"
3002 , "representable-functors"
3003 , "representable-profunctors"
3004 , "representable-tries"
3005 , "resource-embed"
3006 , "resource-simple"
3007 , "respond"
3008 , "restful-snap"
3009 , "RESTng"
3010 , "restricted-workers"
3011 , "restyle"
3012 , "resumable-exceptions"
3013 , "rethinkdb-client-driver"
3014 , "rethinkdb-model"
3015 , "ReviewBoard"
3016 , "rewrite"
3017 , "rewriting"
3018 , "rezoom"
3019 , "rfc3339"
3020 , "riak"
3021 , "riak-protobuf"
3022 , "riot"
3023 , "ripple"
3024 , "ripple-federation"
3025 , "risc386"
3026 , "rivers"
3027 , "RJson"
3028 , "rmonad"
3029 , "RMP"
3030 , "RNAdesign"
3031 , "RNAdraw"
3032 , "RNAFold"
3033 , "RNAFoldProgs"
3034 , "RNAwolf"
3035 , "roguestar"
3036 , "roguestar-engine"
3037 , "roguestar-gl"
3038 , "roguestar-glut"
3039 , "RollingDirectory"
3040 , "rope"
3041 , "rosa"
3042 , "roshask"
3043 , "rosso"
3044 , "rotating-log"
3045 , "rounding"
3046 , "roundtrip"
3047 , "roundtrip-aeson"
3048 , "roundtrip-string"
3049 , "roundtrip-xml"
3050 , "route-generator"
3051 , "route-planning"
3052 , "rowrecord"
3053 , "rpc"
3054 , "rpc-framework"
3055 , "rpm"
3056 , "rsagl"
3057 , "rsagl-frp"
3058 , "rsagl-math"
3059 , "rss2irc"
3060 , "rubberband"
3061 , "ruff"
3062 , "ruler-core"
3063 , "rungekutta"
3064 , "RxHaskell"
3065 , "safe-freeze"
3066 , "safe-globals"
3067 , "safeint"
3068 , "safe-lazy-io"
3069 , "safe-plugins"
3070 , "safer-file-handles"
3071 , "safer-file-handles-bytestring"
3072 , "safer-file-handles-text"
3073 , "sai-shape-syb"
3074 , "Salsa"
3075 , "salvia"
3076 , "salvia-demo"
3077 , "salvia-extras"
3078 , "salvia-protocol"
3079 , "salvia-sessions"
3080 , "salvia-websocket"
3081 , "samtools-iteratee"
3082 , "sasl"
3083 , "sat"
3084 , "satchmo-backends"
3085 , "satchmo-examples"
3086 , "satchmo-funsat"
3087 , "satchmo-minisat"
3088 , "sat-micro-hs"
3089 , "SBench"
3090 , "scaleimage"
3091 , "scan-vector-machine"
3092 , "scat"
3093 , "scenegraph"
3094 , "schedevr"
3095 , "scholdoc"
3096 , "scholdoc-citeproc"
3097 , "scion"
3098 , "scion-browser"
3099 , "scope"
3100 , "scope-cairo"
3101 , "scottish"
3102 , "scotty-blaze"
3103 , "scotty-fay"
3104 , "scotty-hastache"
3105 , "scotty-session"
3106 , "scrabble-bot"
3107 , "ScratchFs"
3108 , "scrobble"
3109 , "scroll"
3110 , "scrz"
3111 , "Scurry"
3112 , "SDL-gfx"
3113 , "SDL-image"
3114 , "SDL-mixer"
3115 , "SDL-mpeg"
3116 , "SDL-ttf"
3117 , "seacat"
3118 , "search"
3119 , "secdh"
3120 , "second-transfer"
3121 , "secret-santa"
3122 , "secret-sharing"
3123 , "secrm"
3124 , "sednaDBXML"
3125 , "selectors"
3126 , "selenium"
3127 , "selenium-server"
3128 , "selinux"
3129 , "Semantique"
3130 , "semigroups-actions"
3131 , "semi-iso"
3132 , "semiring"
3133 , "sensenet"
3134 , "sentry"
3135 , "senza"
3136 , "seqaid"
3137 , "SeqAlign"
3138 , "seqloc-datafiles"
3139 , "sequent-core"
3140 , "sequor"
3141 , "servant-pool"
3142 , "servant-postgresql"
3143 , "servant-scotty"
3144 , "servius"
3145 , "ses-html-snaplet"
3146 , "SessionLogger"
3147 , "sessions"
3148 , "set-with"
3149 , "sexp"
3150 , "sexpr"
3151 , "sext"
3152 , "SFML"
3153 , "SFML-control"
3154 , "SFont"
3155 , "SG"
3156 , "SGdemo"
3157 , "sgrep"
3158 , "shadower"
3159 , "shady-gen"
3160 , "shady-graphics"
3161 , "shake-extras"
3162 , "shaker"
3163 , "shakespeare-css"
3164 , "shakespeare-i18n"
3165 , "shapely-data"
3166 , "shared-buffer"
3167 , "she"
3168 , "Shellac"
3169 , "Shellac-compatline"
3170 , "Shellac-editline"
3171 , "Shellac-haskeline"
3172 , "Shellac-readline"
3173 , "shellish"
3174 , "shell-pipe"
3175 , "shivers-cfg"
3176 , "showdown"
3177 , "shpider"
3178 , "sifflet"
3179 , "sifflet-lib"
3180 , "signals"
3181 , "simd"
3182 , "simgi"
3183 , "simple"
3184 , "simple-bluetooth"
3185 , "simple-css"
3186 , "simple-c-value"
3187 , "simple-firewire"
3188 , "simple-form"
3189 , "SimpleGL"
3190 , "SimpleH"
3191 , "simpleirc"
3192 , "simpleirc-lens"
3193 , "SimpleLog"
3194 , "simple-log-syslog"
3195 , "simplenote"
3196 , "simple-pascal"
3197 , "simple-postgresql-orm"
3198 , "simpleprelude"
3199 , "simple-session"
3200 , "simplessh"
3201 , "simple-templates"
3202 , "simple-vec3"
3203 , "simseq"
3204 , "sindre"
3205 , "sirkel"
3206 , "sized"
3207 , "sized-types"
3208 , "sized-vector"
3209 , "skeleton"
3210 , "skype4hs"
3211 , "slack"
3212 , "slidemews"
3213 , "sloth"
3214 , "smallarray"
3215 , "smallpt-hs"
3216 , "smallstring"
3217 , "smartcheck"
3218 , "smartGroup"
3219 , "smartword"
3220 , "sme"
3221 , "Smooth"
3222 , "smt-lib"
3223 , "smtlib2"
3224 , "smtp2mta"
3225 , "smtp-mail-ng"
3226 , "smtps-gmail"
3227 , "snake-game"
3228 , "snap-accept"
3229 , "snap-app"
3230 , "snap-elm"
3231 , "snap-extras"
3232 , "snaplet-actionlog"
3233 , "snaplet-css-min"
3234 , "snaplet-environments"
3235 , "snaplet-haxl"
3236 , "snaplet-hdbc"
3237 , "snaplet-i18n"
3238 , "snaplet-mongoDB"
3239 , "snaplet-mongodb-minimalistic"
3240 , "snaplet-mysql-simple"
3241 , "snaplet-oauth"
3242 , "snaplet-redson"
3243 , "snaplet-rest"
3244 , "snaplet-riak"
3245 , "snaplet-sedna"
3246 , "snaplet-tasks"
3247 , "snaplet-typed-sessions"
3248 , "snaplet-wordpress"
3249 , "snap-predicates"
3250 , "snappy-iteratee"
3251 , "snap-testing"
3252 , "snap-utils"
3253 , "sndfile-enumerators"
3254 , "sneathlane-haste"
3255 , "SNet"
3256 , "snm"
3257 , "snow-white"
3258 , "Snusmumrik"
3259 , "SoccerFun"
3260 , "SoccerFunGL"
3261 , "sock2stream"
3262 , "socketio"
3263 , "socket-sctp"
3264 , "sonic-visualiser"
3265 , "SoOSiM"
3266 , "sorted"
3267 , "sound-collage"
3268 , "source-code-server"
3269 , "sousit"
3270 , "soxlib"
3271 , "soyuz"
3272 , "SpaceInvaders"
3273 , "SpacePrivateers"
3274 , "spanout"
3275 , "sparse"
3276 , "sparsebit"
3277 , "sparsecheck"
3278 , "spata"
3279 , "special-functors"
3280 , "specialize-th"
3281 , "speculation-transformers"
3282 , "sphero"
3283 , "sphinx-cli"
3284 , "spice"
3285 , "spike"
3286 , "splaytree"
3287 , "splines"
3288 , "split-record"
3289 , "splot"
3290 , "Spock-auth"
3291 , "spoonutil"
3292 , "spoty"
3293 , "Sprig"
3294 , "spy"
3295 , "sqlite-simple-typed"
3296 , "sql-simple"
3297 , "sql-simple-mysql"
3298 , "sql-simple-pool"
3299 , "sql-simple-postgresql"
3300 , "sql-simple-sqlite"
3301 , "srcinst"
3302 , "sscgi"
3303 , "ssh"
3304 , "sssp"
3305 , "sstable"
3306 , "stackage-curator"
3307 , "stack-prism"
3308 , "starrover2"
3309 , "stateful-mtl"
3310 , "statgrab"
3311 , "statistics-dirichlet"
3312 , "statistics-fusion"
3313 , "stb-truetype"
3314 , "steeloverseer"
3315 , "step-function"
3316 , "stepwise"
3317 , "stm-chunked-queues"
3318 , "stmcontrol"
3319 , "stm-firehose"
3320 , "Stomp"
3321 , "storable-static-array"
3322 , "storablevector"
3323 , "storablevector-carray"
3324 , "storablevector-streamfusion"
3325 , "Strafunski-Sdf2Haskell"
3326 , "streamed"
3327 , "stream-fusion"
3328 , "StrictBench"
3329 , "strict-concurrency"
3330 , "string"
3331 , "stringlike"
3332 , "structured-mongoDB"
3333 , "structures"
3334 , "stunts"
3335 , "subhask"
3336 , "suitable"
3337 , "sunlight"
3338 , "sunroof-compiler"
3339 , "sunroof-examples"
3340 , "sunroof-server"
3341 , "supercollider-midi"
3342 , "superdoc"
3343 , "supero"
3344 , "supervisor"
3345 , "svg2q"
3346 , "SVG2Q"
3347 , "svm-simple"
3348 , "svndump"
3349 , "swapper"
3350 , "swearjure"
3351 , "swf"
3352 , "swift-lda"
3353 , "sws"
3354 , "syb-extras"
3355 , "sylvia"
3356 , "sym-plot"
3357 , "sync"
3358 , "sync-mht"
3359 , "syntax"
3360 , "syntax-attoparsec"
3361 , "syntax-example"
3362 , "syntax-example-json"
3363 , "SyntaxMacros"
3364 , "syntax-pretty"
3365 , "syntax-printer"
3366 , "syntax-trees"
3367 , "syntax-trees-fork-bairyn"
3368 , "synthesizer"
3369 , "synthesizer-alsa"
3370 , "synthesizer-core"
3371 , "synthesizer-dimensional"
3372 , "synthesizer-midi"
3373 , "Sysmon"
3374 , "system-canonicalpath"
3375 , "system-lifted"
3376 , "system-random-effect"
3377 , "ta"
3378 , "Tables"
3379 , "tablestorage"
3380 , "tabloid"
3381 , "tagged-list"
3382 , "tagged-th"
3383 , "tagsoup-ht"
3384 , "tagsoup-parsec"
3385 , "Takusen"
3386 , "takusen-oracle"
3387 , "tamarin-prover"
3388 , "tamarin-prover-term"
3389 , "tamarin-prover-theory"
3390 , "tamarin-prover-utils"
3391 , "tamper"
3392 , "target"
3393 , "task"
3394 , "tasty-integrate"
3395 , "TBC"
3396 , "tbox"
3397 , "tccli"
3398 , "tcp"
3399 , "tdd-util"
3400 , "TeaHS"
3401 , "teams"
3402 , "telegram"
3403 , "template-default"
3404 , "template-haskell-util"
3405 , "template-hsml"
3406 , "templatepg"
3407 , "tempodb"
3408 , "temporal-csound"
3409 , "tempus"
3410 , "tensor"
3411 , "termbox-bindings"
3412 , "term-rewriting"
3413 , "terrahs"
3414 , "tersmu"
3415 , "test-framework-doctest"
3416 , "test-framework-quickcheck"
3417 , "testloop"
3418 , "testpattern"
3419 , "testPkg"
3420 , "testrunner"
3421 , "tetris"
3422 , "tex2txt"
3423 , "texrunner"
3424 , "text-json-qq"
3425 , "textmatetags"
3426 , "text-normal"
3427 , "textPlot"
3428 , "text-register-machine"
3429 , "texts"
3430 , "text-xml-generic"
3431 , "text-xml-qq"
3432 , "tfp-th"
3433 , "themplate"
3434 , "Theora"
3435 , "theoremquest-client"
3436 , "thih"
3437 , "thimk"
3438 , "Thingie"
3439 , "th-instances"
3440 , "th-kinds"
3441 , "thrift"
3442 , "Thrift"
3443 , "throttle"
3444 , "tianbar"
3445 , "tic-tac-toe"
3446 , "TicTacToe"
3447 , "tiger"
3448 , "tighttp"
3449 , "timberc"
3450 , "timecalc"
3451 , "time-extras"
3452 , "time-http"
3453 , "timeout"
3454 , "timeout-control"
3455 , "timeparsers"
3456 , "time-patterns"
3457 , "TimePiece"
3458 , "timeplot"
3459 , "time-recurrence"
3460 , "time-series"
3461 , "timestamp-subprocess-lines"
3462 , "time-w3c"
3463 , "TinyLaunchbury"
3464 , "TinyURL"
3465 , "Titim"
3466 , "tkhs"
3467 , "tkyprof"
3468 , "tls-extra"
3469 , "todos"
3470 , "to-haskell"
3471 , "toilet"
3472 , "toktok"
3473 , "tokyocabinet-haskell"
3474 , "toml"
3475 , "Top"
3476 , "topkata"
3477 , "torch"
3478 , "to-string-class"
3479 , "to-string-instances"
3480 , "Tournament"
3481 , "tracker"
3482 , "trajectory"
3483 , "transactional-events"
3484 , "transformers-convert"
3485 , "transformers-runnable"
3486 , "translate"
3487 , "traypoweroff"
3488 , "treemap-html-tools"
3489 , "treeviz"
3490 , "tremulous-query"
3491 , "TrendGraph"
3492 , "trhsx"
3493 , "triangulation"
3494 , "TrieMap"
3495 , "trimpolya"
3496 , "true-name"
3497 , "tsession"
3498 , "tsession-happstack"
3499 , "tskiplist"
3500 , "tsp-viz"
3501 , "tuntap"
3502 , "tup-functor"
3503 , "tuple-gen"
3504 , "tupleinstances"
3505 , "tuple-morph"
3506 , "twentefp-rosetree"
3507 , "twhs"
3508 , "twidge"
3509 , "twilight-stm"
3510 , "twilio"
3511 , "twill"
3512 , "twiml"
3513 , "twine"
3514 , "twisty"
3515 , "twitch"
3516 , "twitter"
3517 , "twitter-conduit"
3518 , "twitter-enumerator"
3519 , "twitter-types"
3520 , "twitter-types-lens"
3521 , "tx"
3522 , "TYB"
3523 , "typalyze"
3524 , "typeable-th"
3525 , "type-cereal"
3526 , "TypeClass"
3527 , "type-digits"
3528 , "typedquery"
3529 , "type-equality-check"
3530 , "typehash"
3531 , "TypeIlluminator"
3532 , "type-int"
3533 , "type-level"
3534 , "type-level-bst"
3535 , "type-level-sets"
3536 , "typelevel-tensor"
3537 , "type-list"
3538 , "TypeNat"
3539 , "type-natural"
3540 , "type-ord"
3541 , "type-ord-spine-cereal"
3542 , "typeparams"
3543 , "type-prelude"
3544 , "typescript-docs"
3545 , "type-settheory"
3546 , "type-spine"
3547 , "type-structure"
3548 , "type-sub-th"
3549 , "typography-geometry"
3550 , "uAgda"
3551 , "uberlast"
3552 , "uconv"
3553 , "udbus"
3554 , "udbus-model"
3555 , "udev"
3556 , "ui-command"
3557 , "UMM"
3558 , "unamb-custom"
3559 , "unbound"
3560 , "unbounded-delays-units"
3561 , "unboxed-containers"
3562 , "unicode-normalization"
3563 , "unicoder"
3564 , "uniform-io"
3565 , "union-map"
3566 , "uniqueid"
3567 , "unique-logic-tf"
3568 , "units"
3569 , "units-defs"
3570 , "unittyped"
3571 , "universe-th"
3572 , "unix-process-conduit"
3573 , "unlit"
3574 , "unordered-containers-rematch"
3575 , "unpack-funcs"
3576 , "unscramble"
3577 , "up"
3578 , "uploadcare"
3579 , "upskirt"
3580 , "ureader"
3581 , "urembed"
3582 , "uri-conduit"
3583 , "uri-enumerator"
3584 , "uri-enumerator-file"
3585 , "urlcheck"
3586 , "urldecode"
3587 , "UrlDisp"
3588 , "urldisp-happstack"
3589 , "url-generic"
3590 , "URLT"
3591 , "urxml"
3592 , "usb-enumerator"
3593 , "usb-iteratee"
3594 , "usb-safe"
3595 , "uuagc-diagrams"
3596 , "uu-tc"
3597 , "uvector"
3598 , "uvector-algorithms"
3599 , "v4l2"
3600 , "v4l2-examples"
3601 , "vacuum"
3602 , "vacuum-cairo"
3603 , "vacuum-graphviz"
3604 , "vacuum-opengl"
3605 , "vacuum-ubigraph"
3606 , "validate"
3607 , "vampire"
3608 , "var"
3609 , "vaultaire-common"
3610 , "vcard"
3611 , "Vec-Boolean"
3612 , "Vec-OpenGLRaw"
3613 , "vector-bytestring"
3614 , "vector-clock"
3615 , "vector-conduit"
3616 , "vector-fftw"
3617 , "vector-functorlazy"
3618 , "vector-instances-collections"
3619 , "vector-random"
3620 , "vector-read-instances"
3621 , "vector-space-opengl"
3622 , "vector-static"
3623 , "Vec-Transform"
3624 , "verilog"
3625 , "vigilance"
3626 , "vintage-basic"
3627 , "vinyl"
3628 , "vinyl-gl"
3629 , "vinyl-json"
3630 , "vinyl-utils"
3631 , "virthualenv"
3632 , "vision"
3633 , "visual-graphrewrite"
3634 , "visual-prof"
3635 , "vk-aws-route53"
3636 , "VKHS"
3637 , "vorbiscomment"
3638 , "vowpal-utils"
3639 , "voyeur"
3640 , "vtegtk3"
3641 , "vty-examples"
3642 , "vty-menu"
3643 , "vty-ui"
3644 , "vty-ui-extras"
3645 , "wai-cors"
3646 , "wai-eventsource"
3647 , "wai-graceful"
3648 , "wai-handler-devel"
3649 , "wai-handler-snap"
3650 , "wai-handler-webkit"
3651 , "wai-hastache"
3652 , "wai-lite"
3653 , "wai-logger-prefork"
3654 , "wai-middleware-cache"
3655 , "wai-middleware-cache-redis"
3656 , "wai-middleware-catch"
3657 , "wai-middleware-consul"
3658 , "wai-middleware-etag"
3659 , "wai-middleware-headers"
3660 , "wai-middleware-hmac-client"
3661 , "wai-middleware-preprocessor"
3662 , "wai-middleware-route"
3663 , "wai-middleware-static-caching"
3664 , "wai-predicates"
3665 , "wai-routing"
3666 , "wai-session-tokyocabinet"
3667 , "wai-static-cache"
3668 , "wai-throttler"
3669 , "waitra"
3670 , "warp-dynamic"
3671 , "warp-static"
3672 , "warp-tls-uid"
3673 , "WashNGo"
3674 , "watchdog"
3675 , "watcher"
3676 , "watchit"
3677 , "wavesurfer"
3678 , "weather-api"
3679 , "WebBits-Html"
3680 , "WebBits-multiplate"
3681 , "web-browser-in-haskell"
3682 , "WebCont"
3683 , "webcrank-dispatch"
3684 , "webcrank-wai"
3685 , "webdriver-snoy"
3686 , "web-encodings"
3687 , "webify"
3688 , "webkit-javascriptcore"
3689 , "web-mongrel2"
3690 , "Webrexp"
3691 , "web-routes-quasi"
3692 , "web-routes-transformers"
3693 , "webserver"
3694 , "websnap"
3695 , "webwire"
3696 , "wedged"
3697 , "weighted-regexp"
3698 , "welshy"
3699 , "Wheb"
3700 , "wheb-mongo"
3701 , "wheb-redis"
3702 , "wheb-strapped"
3703 , "whim"
3704 , "whitespace"
3705 , "WikimediaParser"
3706 , "wikipedia4epub"
3707 , "Win32-dhcp-server"
3708 , "Win32-errors"
3709 , "Win32-extras"
3710 , "Win32-junction-point"
3711 , "Win32-notify"
3712 , "Win32-security"
3713 , "Win32-services"
3714 , "Win32-services-wrapper"
3715 , "windowslive"
3716 , "winerror"
3717 , "winio"
3718 , "WL500gPControl"
3719 , "wlc-hs"
3720 , "wobsurv"
3721 , "woffex"
3722 , "wolf"
3723 , "word24"
3724 , "wordcloud"
3725 , "Wordlint"
3726 , "WordNet"
3727 , "WordNet-ghc74"
3728 , "wordsearch"
3729 , "wp-archivebot"
3730 , "wraxml"
3731 , "wright"
3732 , "wtk"
3733 , "wtk-gtk"
3734 , "wumpus-basic"
3735 , "wumpus-core"
3736 , "wumpus-drawing"
3737 , "wumpus-microprint"
3738 , "wumpus-tree"
3739 , "WURFL"
3740 , "wxAsteroids"
3741 , "WXDiffCtrl"
3742 , "wxFruit"
3743 , "wxhnotepad"
3744 , "wxturtle"
3745 , "wyvern"
3746 , "X11-extras"
3747 , "X11-rm"
3748 , "X11-xdamage"
3749 , "X11-xfixes"
3750 , "x11-xinput"
3751 , "x509-util"
3752 , "xchat-plugin"
3753 , "x-dsp"
3754 , "Xec"
3755 , "xfconf"
3756 , "xhaskell-library"
3757 , "xhb-ewmh"
3758 , "xine"
3759 , "xing-api"
3760 , "XInput"
3761 , "xkcd"
3762 , "xlsior"
3763 , "xlsx-templater"
3764 , "xml2json"
3765 , "xml2x"
3766 , "xml-catalog"
3767 , "xml-enumerator"
3768 , "xml-enumerator-combinators"
3769 , "XmlHtmlWriter"
3770 , "xml-parsec"
3771 , "xml-pipe"
3772 , "xml-prettify"
3773 , "xml-push"
3774 , "xmltv"
3775 , "XMMS"
3776 , "xmms2-client"
3777 , "xmms2-client-glib"
3778 , "xmonad-bluetilebranch"
3779 , "xmonad-contrib-bluetilebranch"
3780 , "xmonad-eval"
3781 , "xmpipe"
3782 , "XMPP"
3783 , "xournal-builder"
3784 , "xournal-convert"
3785 , "xournal-parser"
3786 , "xournal-render"
3787 , "xournal-types"
3788 , "xsact"
3789 , "XSaiga"
3790 , "xslt"
3791 , "y0l0bot"
3792 , "Yablog"
3793 , "yackage"
3794 , "YACPong"
3795 , "yahoo-web-search"
3796 , "yajl"
3797 , "yajl-enumerator"
3798 , "yaml2owl"
3799 , "YamlReference"
3800 , "yaml-rpc"
3801 , "yaml-rpc-scotty"
3802 , "yaml-rpc-snap"
3803 , "yampa-canvas"
3804 , "yampa-glfw"
3805 , "yampa-glut"
3806 , "yaop"
3807 , "yarr"
3808 , "yarr-image-io"
3809 , "yavie"
3810 , "ycextra"
3811 , "yesod-angular-ui"
3812 , "yesod-auth-account-fork"
3813 , "yesod-auth-kerberos"
3814 , "yesod-auth-ldap"
3815 , "yesod-auth-pam"
3816 , "yesod-auth-smbclient"
3817 , "yesod-bootstrap"
3818 , "yesod-comments"
3819 , "yesod-continuations"
3820 , "yesod-datatables"
3821 , "yesod-dsl"
3822 , "yesod-eventsource"
3823 , "yesod-examples"
3824 , "yesod-goodies"
3825 , "yesod-links"
3826 , "yesod-mangopay"
3827 , "yesod-paginate"
3828 , "yesod-pagination"
3829 , "yesod-paginator"
3830 , "yesod-platform"
3831 , "yesod-pure"
3832 , "yesod-purescript"
3833 , "yesod-raml"
3834 , "yesod-routes-flow"
3835 , "yesod-routes-typescript"
3836 , "yesod-rst"
3837 , "yesod-s3"
3838 , "yesod-session-redis"
3839 , "yesod-tableview"
3840 , "yesod-test-json"
3841 , "yesod-tls"
3842 , "yesod-vend"
3843 , "yesod-worker"
3844 , "YFrob"
3845 , "yhccore"
3846 , "yi-contrib"
3847 , "yi-fuzzy-open"
3848 , "yi-gtk"
3849 , "yi-vty"
3850 , "yjftp"
3851 , "Yogurt"
3852 , "Yogurt-Standalone"
3853 , "yoko"
3854 , "york-lava"
3855 , "yql"
3856 , "yuiGrid"
3857 , "yuuko"
3858 , "zampolit"
3859 , "zasni-gerna"
3860 , "zendesk-api"
3861 , "zeno"
3862 , "zeromq3-conduit"
3863 , "zeromq3-haskell"
3864 , "zeromq-haskell"
3865 , "zeroth"
3866 , "ZFS"
3867 , "zipedit"
3868 , "ZMachine"
3869 , "zmcat"
3870 , "zmqat"
3871 , "zoneinfo"
3872 , "zoom"
3873 , "zoom-cache"
3874 , "zoom-cache-pcm"
3875 , "zoom-cache-sndfile"
3876 , "zot"
3877 , "zsh-battery"
3878 , "ztail"
3879 , "Zwaluw"
3884-- instance Text Configuration where
3885-- parse = do platform <- token (Parse.string "platform") >> token (Parse.char '=') >> parse
3886-- return $ Configuration
3887-- { platform = platform
3888-- }
3890-- token :: Parse.ReadP r a -> Parse.ReadP r a
3891-- -- token p = p >>= \r -> Parse.skipSpaces >> return r
3892-- token p = Parse.skipSpaces >> p
3894-- listOf :: Parse.ReadP r a -> Parse.ReadP r [a]
3895-- listOf p = Parse.between (token (Parse.char '[')) (token (Parse.char ']'))
3896-- (Parse.sepBy (token p) (token (Parse.char ',')))
3898-- run :: Parse.ReadP a a -> String -> Maybe a
3899-- run p str = case [ r' | (r', s) <- Parse.readP_to_S (Parse.skipSpaces >> p) str, all isSpace s ] of
3900-- [] -> Nothing
3901-- (r:_) -> Just r