mirror of
https://github.com/github/semantic.git
synced 2024-11-22 23:29:37 +03:00
commit
a2902fd27f
1
.github/workflows/bazel.yml
vendored
1
.github/workflows/bazel.yml
vendored
@ -24,7 +24,6 @@ jobs:
|
|||||||
path: |
|
path: |
|
||||||
.bazel-cache
|
.bazel-cache
|
||||||
bin
|
bin
|
||||||
/home/runner/.cache
|
|
||||||
key: ${{ runner.os }}-bazel-${{ github.run_id }}
|
key: ${{ runner.os }}-bazel-${{ github.run_id }}
|
||||||
restore-keys: |
|
restore-keys: |
|
||||||
${{ runner.os }}-bazel-
|
${{ runner.os }}-bazel-
|
||||||
|
2
.github/workflows/haskell.yml
vendored
2
.github/workflows/haskell.yml
vendored
@ -14,7 +14,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
ghc: ["8.8.3", "8.10.1"]
|
ghc: ["8.10.1"]
|
||||||
cabal: ["3.2.0.0"]
|
cabal: ["3.2.0.0"]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
@ -58,7 +58,7 @@ Available options:
|
|||||||
|
|
||||||
## Development
|
## Development
|
||||||
|
|
||||||
`semantic` requires at least GHC 8.8.3 and Cabal 3.0. We strongly recommend using [`ghcup`][ghcup] to sandbox GHC versions, as GHC packages installed through your OS's package manager may not install statically-linked versions of the GHC boot libraries. `semantic` currently builds only on Unix systems; users of other operating systems may wish to use the [Docker images](https://github.com/github/semantic/packages/11609).
|
`semantic` requires at least GHC 8.10.1 and Cabal 3.0. We strongly recommend using [`ghcup`][ghcup] to sandbox GHC versions, as GHC packages installed through your OS's package manager may not install statically-linked versions of the GHC boot libraries. `semantic` currently builds only on Unix systems; users of other operating systems may wish to use the [Docker images](https://github.com/github/semantic/packages/11609).
|
||||||
|
|
||||||
We use `cabal's` [Nix-style local builds][nix] for development. To get started quickly:
|
We use `cabal's` [Nix-style local builds][nix] for development. To get started quickly:
|
||||||
|
|
||||||
|
@ -96,9 +96,11 @@ stack_snapshot(
|
|||||||
"hspec-expectations",
|
"hspec-expectations",
|
||||||
"lens",
|
"lens",
|
||||||
"lingo",
|
"lingo",
|
||||||
|
"neat-interpolation",
|
||||||
"network",
|
"network",
|
||||||
"network-uri",
|
"network-uri",
|
||||||
"optparse-applicative",
|
"optparse-applicative",
|
||||||
|
"optparse-generic",
|
||||||
"parsers",
|
"parsers",
|
||||||
"pathtype",
|
"pathtype",
|
||||||
"pretty-show",
|
"pretty-show",
|
||||||
@ -138,6 +140,7 @@ stack_snapshot(
|
|||||||
"vector",
|
"vector",
|
||||||
"yaml",
|
"yaml",
|
||||||
],
|
],
|
||||||
|
stack_snapshot_json = "//:stackage_snapshot.json",
|
||||||
tools = ["@happy"],
|
tools = ["@happy"],
|
||||||
vendored_packages = {
|
vendored_packages = {
|
||||||
"tree-sitter-{}".format(name): "@tree-sitter-{name}//:tree-sitter-{name}".format(name = name)
|
"tree-sitter-{}".format(name): "@tree-sitter-{name}//:tree-sitter-{name}".format(name = name)
|
||||||
|
2
script/astgen
Executable file
2
script/astgen
Executable file
@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
bazel run //semantic-ast:generate-ast -- --language=all --rootdir=$PWD
|
@ -12,6 +12,7 @@ load(
|
|||||||
)
|
)
|
||||||
load(
|
load(
|
||||||
"//:build/common.bzl",
|
"//:build/common.bzl",
|
||||||
|
"EXECUTABLE_FLAGS",
|
||||||
"GHC_FLAGS",
|
"GHC_FLAGS",
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -46,3 +47,52 @@ haskell_library(
|
|||||||
"@stackage//:unordered-containers",
|
"@stackage//:unordered-containers",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
all_ts_deps = ["@tree-sitter-{name}".format(name = name) for name in [
|
||||||
|
"go",
|
||||||
|
"java",
|
||||||
|
"json",
|
||||||
|
"php",
|
||||||
|
"python",
|
||||||
|
"ql",
|
||||||
|
"ruby",
|
||||||
|
"rust",
|
||||||
|
"tsx",
|
||||||
|
"typescript",
|
||||||
|
]]
|
||||||
|
|
||||||
|
all_file_deps = ["@tree-sitter-{name}//:src/node-types.json".format(name = name) for name in [
|
||||||
|
"go",
|
||||||
|
"java",
|
||||||
|
"json",
|
||||||
|
"php",
|
||||||
|
"python",
|
||||||
|
"ql",
|
||||||
|
"ruby",
|
||||||
|
"rust",
|
||||||
|
"tsx",
|
||||||
|
"typescript",
|
||||||
|
]]
|
||||||
|
|
||||||
|
haskell_binary(
|
||||||
|
name = "generate-ast",
|
||||||
|
srcs = glob(["app/**/*.hs"]),
|
||||||
|
compiler_flags = GHC_FLAGS + EXECUTABLE_FLAGS + ["-XStrictData"],
|
||||||
|
data = all_file_deps,
|
||||||
|
deps = [
|
||||||
|
":semantic-ast",
|
||||||
|
"//:base",
|
||||||
|
"//:filepath",
|
||||||
|
"//:process",
|
||||||
|
"//:template-haskell",
|
||||||
|
"//:text",
|
||||||
|
"//semantic-source",
|
||||||
|
"@stackage//:bazel-runfiles",
|
||||||
|
"@stackage//:directory",
|
||||||
|
"@stackage//:generic-lens",
|
||||||
|
"@stackage//:lens",
|
||||||
|
"@stackage//:neat-interpolation",
|
||||||
|
"@stackage//:optparse-generic",
|
||||||
|
"@stackage//:tree-sitter",
|
||||||
|
] + all_ts_deps,
|
||||||
|
)
|
||||||
|
@ -1,5 +1,17 @@
|
|||||||
# semantic-ast
|
# semantic-ast
|
||||||
|
|
||||||
This package is concerned with the CodeGen generation of strongly-typed ASTs.
|
This package is concerned with the CodeGen generation of strongly-typed ASTs.
|
||||||
|
|
||||||
|
The provided `semantic-ast` executable is responsible for generating ASTs from language definitions. You can run it like so:
|
||||||
|
|
||||||
|
```
|
||||||
|
cabal run semantic-ast -- --language=JSON
|
||||||
|
```
|
||||||
|
|
||||||
|
You can also pass `all` to regenerate every language definition:
|
||||||
|
|
||||||
|
```
|
||||||
|
cabal run semantic-ast -- --language=all
|
||||||
|
```
|
||||||
|
|
||||||
[Documentation](https://github.com/github/semantic/blob/master/docs/codegen.md)
|
[Documentation](https://github.com/github/semantic/blob/master/docs/codegen.md)
|
||||||
|
203
semantic-ast/app/Main.hs
Normal file
203
semantic-ast/app/Main.hs
Normal file
@ -0,0 +1,203 @@
|
|||||||
|
{-# LANGUAGE DeriveAnyClass #-}
|
||||||
|
{-# LANGUAGE DeriveGeneric #-}
|
||||||
|
{-# LANGUAGE DerivingStrategies #-}
|
||||||
|
{-# LANGUAGE FlexibleInstances #-}
|
||||||
|
{-# LANGUAGE LambdaCase #-}
|
||||||
|
{-# LANGUAGE OverloadedStrings #-}
|
||||||
|
{-# LANGUAGE QuasiQuotes #-}
|
||||||
|
{-# LANGUAGE TemplateHaskell #-}
|
||||||
|
{-# LANGUAGE TypeApplications #-}
|
||||||
|
{-# LANGUAGE TypeSynonymInstances #-}
|
||||||
|
{-# OPTIONS_GHC -fno-warn-orphans #-}
|
||||||
|
|
||||||
|
module Main (main) where
|
||||||
|
|
||||||
|
import AST.GenerateSyntax
|
||||||
|
import qualified Bazel.Runfiles as Bazel
|
||||||
|
import Control.Lens (Traversal', mapped, (%~))
|
||||||
|
import Control.Monad
|
||||||
|
import Data.Foldable
|
||||||
|
import Data.Generics.Product.Typed (typed)
|
||||||
|
import Data.Maybe
|
||||||
|
import Data.Text (Text)
|
||||||
|
import qualified Data.Text as T
|
||||||
|
import qualified Data.Text.IO as T
|
||||||
|
import Foreign
|
||||||
|
import GHC.Generics (Generic)
|
||||||
|
import Language.Haskell.TH hiding (JavaScript)
|
||||||
|
import Language.Haskell.TH.Lens
|
||||||
|
import NeatInterpolation
|
||||||
|
import qualified Options.Generic as Opt
|
||||||
|
import Source.Language
|
||||||
|
import System.FilePath
|
||||||
|
import System.Directory
|
||||||
|
import System.Exit
|
||||||
|
import System.IO
|
||||||
|
import System.Process
|
||||||
|
import Text.Printf
|
||||||
|
import qualified TreeSitter.Go as Go (tree_sitter_go)
|
||||||
|
import qualified TreeSitter.JSON as JSON (tree_sitter_json)
|
||||||
|
import qualified TreeSitter.Java as Java (tree_sitter_java)
|
||||||
|
import qualified TreeSitter.Language
|
||||||
|
import qualified TreeSitter.PHP as PHP (tree_sitter_php)
|
||||||
|
import qualified TreeSitter.Python as Python (tree_sitter_python)
|
||||||
|
import qualified TreeSitter.QL as CodeQL (tree_sitter_ql)
|
||||||
|
import qualified TreeSitter.Ruby as Ruby (tree_sitter_ruby)
|
||||||
|
import qualified TreeSitter.TSX as TSX (tree_sitter_tsx)
|
||||||
|
import qualified TreeSitter.TypeScript as TypeScript (tree_sitter_typescript)
|
||||||
|
|
||||||
|
-- As a special case, you can pass
|
||||||
|
data Config = Config {language :: Text, rootdir :: FilePath}
|
||||||
|
deriving stock (Show, Generic)
|
||||||
|
deriving anyclass (Opt.ParseRecord)
|
||||||
|
|
||||||
|
-- There are a few cases where the output emitted by TH's 'pprint' doesn't
|
||||||
|
-- create entirely valid Haskell syntax, because sometimes we get
|
||||||
|
-- a qualified name on the LHS of a typeclass declaration, which Haskell
|
||||||
|
-- doesn't like at all. I haven't figured out quite why we get this qualified
|
||||||
|
-- name, but for now the easiest thing to do is some nested updates with lens.
|
||||||
|
adjust :: Dec -> Dec
|
||||||
|
adjust = _InstanceD . typed . mapped %~ (values %~ truncate) . (functions %~ truncate)
|
||||||
|
where
|
||||||
|
-- Need to handle functions with no arguments, which are parsed as ValD entities,
|
||||||
|
-- as well as those with arguments, which are FunD.
|
||||||
|
values, functions :: Traversal' Dec Name
|
||||||
|
values = _ValD . typed . _VarP
|
||||||
|
functions = _FunD . typed
|
||||||
|
|
||||||
|
truncate :: Name -> Name
|
||||||
|
truncate = mkName . nameBase
|
||||||
|
|
||||||
|
pathForLanguage :: Bazel.Runfiles -> Language -> FilePath
|
||||||
|
pathForLanguage rf =
|
||||||
|
let loc = Bazel.rlocation rf
|
||||||
|
in \case
|
||||||
|
CodeQL -> loc "tree-sitter-ql/vendor/tree-sitter-ql/src/node-types.json"
|
||||||
|
Go -> loc "tree-sitter-go/vendor/tree-sitter-go/src/node-types.json"
|
||||||
|
PHP -> loc "tree-sitter-php/vendor/tree-sitter-php/src/node-types.json"
|
||||||
|
Python -> loc "tree-sitter-python/vendor/tree-sitter-python/src/node-types.json"
|
||||||
|
Ruby -> loc "tree-sitter-ruby/vendor/tree-sitter-ruby/src/node-types.json"
|
||||||
|
TypeScript -> loc "tree-sitter-typescript/vendor/tree-sitter-typescript/typescript/src/node-types.json"
|
||||||
|
TSX -> loc "tree-sitter-tsx/vendor/tree-sitter-typescript/tsx/src/node-types.json"
|
||||||
|
JavaScript -> loc "tree-sitter-typescript/vendor/tree-sitter-typescript/typescript/src/node-types.json"
|
||||||
|
JSX -> loc "tree-sitter-typescript/vendor/tree-sitter-typescript/src/tsx/node-types.json"
|
||||||
|
Java -> loc "tree-sitter-java/vendor/tree-sitter-java/src/node-types.json"
|
||||||
|
other -> error ("Couldn't find path for " <> show other)
|
||||||
|
|
||||||
|
targetForLanguage :: Language -> FilePath
|
||||||
|
targetForLanguage x =
|
||||||
|
let go lc = printf "semantic-%s/src/Language/%s/AST.hs" (lc :: String) (show x)
|
||||||
|
in case x of
|
||||||
|
CodeQL -> go "codeql"
|
||||||
|
Go -> go "go"
|
||||||
|
PHP -> go "php"
|
||||||
|
Python -> go "python"
|
||||||
|
Ruby -> go "ruby"
|
||||||
|
TypeScript -> go "typescript"
|
||||||
|
TSX -> go "tsx"
|
||||||
|
JavaScript -> go "javascript"
|
||||||
|
Java -> go "java"
|
||||||
|
other -> error ("Couldn't find path for " <> show other)
|
||||||
|
|
||||||
|
parserForLanguage :: Language -> Ptr TreeSitter.Language.Language
|
||||||
|
parserForLanguage = \case
|
||||||
|
Unknown -> error "Unknown language encountered"
|
||||||
|
CodeQL -> (CodeQL.tree_sitter_ql)
|
||||||
|
Go -> Go.tree_sitter_go
|
||||||
|
Haskell -> error "Haskell backend not implemented yet"
|
||||||
|
Java -> Java.tree_sitter_java
|
||||||
|
JavaScript -> TypeScript.tree_sitter_typescript
|
||||||
|
JSON -> JSON.tree_sitter_json
|
||||||
|
JSX -> TSX.tree_sitter_tsx
|
||||||
|
Markdown -> error "Markdown backend deprecated"
|
||||||
|
PHP -> PHP.tree_sitter_php
|
||||||
|
Python -> Python.tree_sitter_python
|
||||||
|
Ruby -> Ruby.tree_sitter_ruby
|
||||||
|
TypeScript -> TypeScript.tree_sitter_typescript
|
||||||
|
TSX -> TSX.tree_sitter_tsx
|
||||||
|
|
||||||
|
-- nodeTypesPathForLanguage :: Bazel.Runfiles -> Language -> FilePath
|
||||||
|
-- nodeTypesPathForLanguage rf = \case
|
||||||
|
-- CodeQL -> r
|
||||||
|
|
||||||
|
validLanguages :: [Language]
|
||||||
|
validLanguages = [CodeQL, Go, Java, PHP, Python, Ruby, TypeScript, TSX]
|
||||||
|
|
||||||
|
emit :: FilePath -> Language -> IO ()
|
||||||
|
emit root lang = do
|
||||||
|
rf <- Bazel.create
|
||||||
|
let language = languageToText lang
|
||||||
|
let languageHack = case lang of
|
||||||
|
CodeQL -> "QL"
|
||||||
|
_ -> language
|
||||||
|
let path = pathForLanguage rf lang
|
||||||
|
decls <- T.pack . pprint . fmap adjust <$> astDeclarationsIO (parserForLanguage lang) path
|
||||||
|
|
||||||
|
let programText =
|
||||||
|
[trimming|
|
||||||
|
-- Language definition for $language, generated by ast-generate. Do not edit!
|
||||||
|
{-# LANGUAGE CPP #-}
|
||||||
|
{-# LANGUAGE DataKinds #-}
|
||||||
|
{-# LANGUAGE DeriveAnyClass #-}
|
||||||
|
{-# LANGUAGE DeriveGeneric #-}
|
||||||
|
{-# LANGUAGE DeriveTraversable #-}
|
||||||
|
{-# LANGUAGE DerivingStrategies #-}
|
||||||
|
{-# LANGUAGE DuplicateRecordFields #-}
|
||||||
|
{-# LANGUAGE FlexibleInstances #-}
|
||||||
|
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
|
||||||
|
{-# LANGUAGE KindSignatures #-}
|
||||||
|
{-# LANGUAGE MultiParamTypeClasses #-}
|
||||||
|
{-# LANGUAGE QuantifiedConstraints #-}
|
||||||
|
{-# LANGUAGE StandaloneDeriving #-}
|
||||||
|
{-# LANGUAGE TemplateHaskell #-}
|
||||||
|
{-# LANGUAGE TypeApplications #-}
|
||||||
|
{-# LANGUAGE TypeOperators #-}
|
||||||
|
{-# LANGUAGE UndecidableInstances #-}
|
||||||
|
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
|
||||||
|
|
||||||
|
module Language.$language.AST (module Language.$language.AST, getTestCorpusDir) where
|
||||||
|
|
||||||
|
import qualified AST.Parse
|
||||||
|
import qualified AST.Token
|
||||||
|
import qualified AST.Traversable1.Class
|
||||||
|
import qualified AST.Unmarshal
|
||||||
|
import qualified Data.Foldable
|
||||||
|
import qualified Data.List as Data.OldList
|
||||||
|
import qualified Data.Maybe as GHC.Maybe
|
||||||
|
import qualified Data.Text.Internal
|
||||||
|
import qualified Data.Traversable
|
||||||
|
import qualified GHC.Base
|
||||||
|
import qualified GHC.Generics
|
||||||
|
import qualified GHC.Records
|
||||||
|
import qualified GHC.Show
|
||||||
|
import qualified Prelude as GHC.Classes
|
||||||
|
import qualified TreeSitter.Node
|
||||||
|
|
||||||
|
import TreeSitter.$languageHack (getTestCorpusDir)
|
||||||
|
|
||||||
|
debugSymbolNames :: [GHC.Base.String]
|
||||||
|
debugSymbolNames = debugSymbolNames_0
|
||||||
|
|
||||||
|
$decls
|
||||||
|
|]
|
||||||
|
hasOrmolu <- findExecutable "ormolu"
|
||||||
|
if isNothing hasOrmolu
|
||||||
|
then do
|
||||||
|
T.putStrLn programText
|
||||||
|
hPutStrLn stderr "generate-ast: No `ormolu` executable found, output will look janky."
|
||||||
|
else do
|
||||||
|
(path, tf) <- openTempFile "/tmp" "generated.hs"
|
||||||
|
T.hPutStrLn tf programText
|
||||||
|
hClose tf
|
||||||
|
callProcess "ormolu" ["--mode", "inplace", path]
|
||||||
|
callProcess "cp" [path, root </> targetForLanguage lang]
|
||||||
|
|
||||||
|
main :: IO ()
|
||||||
|
main = do
|
||||||
|
Config language root <- Opt.getRecord "generate-ast"
|
||||||
|
if language == "all"
|
||||||
|
then traverse_ (emit root) validLanguages
|
||||||
|
else do
|
||||||
|
let lang = textToLanguage language
|
||||||
|
when (lang == Unknown) (die ("Couldn't determine language for " <> T.unpack language))
|
||||||
|
emit root lang
|
@ -80,4 +80,3 @@ library
|
|||||||
, unordered-containers ^>= 0.2.10
|
, unordered-containers ^>= 0.2.10
|
||||||
|
|
||||||
hs-source-dirs: src
|
hs-source-dirs: src
|
||||||
default-language: Haskell2010
|
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
module AST.GenerateSyntax
|
module AST.GenerateSyntax
|
||||||
( syntaxDatatype
|
( syntaxDatatype
|
||||||
, astDeclarationsForLanguage
|
, astDeclarationsForLanguage
|
||||||
|
, astDeclarationsIO
|
||||||
) where
|
) where
|
||||||
|
|
||||||
import AST.Deserialize (Children (..), Datatype (..), DatatypeName (..), Field (..), Multiple (..), Named (..), Required (..), Type (..))
|
import AST.Deserialize (Children (..), Datatype (..), DatatypeName (..), Field (..), Multiple (..), Named (..), Required (..), Type (..))
|
||||||
@ -44,13 +45,20 @@ astDeclarationsForLanguage language filePath = do
|
|||||||
currentFilename <- loc_filename <$> location
|
currentFilename <- loc_filename <$> location
|
||||||
pwd <- runIO getCurrentDirectory
|
pwd <- runIO getCurrentDirectory
|
||||||
let invocationRelativePath = takeDirectory (pwd </> currentFilename) </> filePath
|
let invocationRelativePath = takeDirectory (pwd </> currentFilename) </> filePath
|
||||||
|
astDeclarationsRelative lookupTypeName language invocationRelativePath
|
||||||
|
|
||||||
|
astDeclarationsIO :: Ptr TS.Language -> FilePath -> IO [Dec]
|
||||||
|
astDeclarationsIO lang p = runQ (astDeclarationsRelative (const (pure Nothing)) lang p)
|
||||||
|
|
||||||
|
astDeclarationsRelative :: (String -> Q (Maybe Name)) -> Ptr TS.Language -> FilePath -> Q [Dec]
|
||||||
|
astDeclarationsRelative lookupName language invocationRelativePath = do
|
||||||
input <- runIO (eitherDecodeFileStrict' invocationRelativePath) >>= either fail pure
|
input <- runIO (eitherDecodeFileStrict' invocationRelativePath) >>= either fail pure
|
||||||
allSymbols <- runIO (getAllSymbols language)
|
allSymbols <- runIO (getAllSymbols language)
|
||||||
debugSymbolNames <- [d|
|
debugSymbolNames <- [d|
|
||||||
debugSymbolNames :: [String]
|
debugSymbolNames :: [String]
|
||||||
debugSymbolNames = $(listE (map (litE . stringL . debugPrefix) allSymbols))
|
debugSymbolNames = $(listE (map (litE . stringL . debugPrefix) allSymbols))
|
||||||
|]
|
|]
|
||||||
mappend debugSymbolNames . concat @[] <$> traverse (syntaxDatatype language allSymbols) input
|
mappend debugSymbolNames . concat @[] <$> traverse (syntaxDatatype lookupName language allSymbols) input
|
||||||
|
|
||||||
-- Build a list of all symbols
|
-- Build a list of all symbols
|
||||||
getAllSymbols :: Ptr TS.Language -> IO [(String, Named)]
|
getAllSymbols :: Ptr TS.Language -> IO [(String, Named)]
|
||||||
@ -69,14 +77,14 @@ annParameterName :: Name
|
|||||||
annParameterName = mkName "a"
|
annParameterName = mkName "a"
|
||||||
|
|
||||||
-- Auto-generate Haskell datatypes for sums, products and leaf types
|
-- Auto-generate Haskell datatypes for sums, products and leaf types
|
||||||
syntaxDatatype :: Ptr TS.Language -> [(String, Named)] -> Datatype -> Q [Dec]
|
syntaxDatatype :: (String -> Q (Maybe Name)) -> Ptr TS.Language -> [(String, Named)] -> Datatype -> Q [Dec]
|
||||||
syntaxDatatype language allSymbols datatype = skipDefined $ do
|
syntaxDatatype lookupType language allSymbols datatype = skipDefined $ do
|
||||||
let traversalInstances = mappend <$> makeStandaloneDerivings (conT name) <*> makeTraversalInstances (conT name)
|
let traversalInstances = mappend <$> makeStandaloneDerivings (conT name) <*> makeTraversalInstances (conT name)
|
||||||
glue a b c = a : b <> c
|
glue a b c = a : b <> c
|
||||||
name = mkName nameStr
|
name = mkName nameStr
|
||||||
generatedDatatype cons = dataD (cxt []) name [plainTV annParameterName] Nothing cons [deriveStockClause, deriveAnyClassClause]
|
generatedDatatype cons = dataD (cxt []) name [plainTV annParameterName] Nothing cons [deriveStockClause, deriveAnyClassClause]
|
||||||
deriveStockClause = derivClause (Just StockStrategy) [conT ''Generic, conT ''Generic1]
|
deriveStockClause = derivClause (Just StockStrategy) [conT ''Generic, conT ''Generic1]
|
||||||
deriveAnyClassClause = derivClause (Just AnyclassStrategy) [conT ''Traversable1 `appT` varT (mkName "someConstraint")]
|
deriveAnyClassClause = derivClause (Just AnyclassStrategy) [ [t| (forall a. Traversable1 a) |] ]
|
||||||
deriveGN = derivClause (Just NewtypeStrategy) [conT ''TS.SymbolMatching]
|
deriveGN = derivClause (Just NewtypeStrategy) [conT ''TS.SymbolMatching]
|
||||||
case datatype of
|
case datatype of
|
||||||
SumType (DatatypeName _) _ subtypes ->
|
SumType (DatatypeName _) _ subtypes ->
|
||||||
@ -101,7 +109,7 @@ syntaxDatatype language allSymbols datatype = skipDefined $ do
|
|||||||
where
|
where
|
||||||
-- Skip generating datatypes that have already been defined (overridden) in the module where the splice is running.
|
-- Skip generating datatypes that have already been defined (overridden) in the module where the splice is running.
|
||||||
skipDefined m = do
|
skipDefined m = do
|
||||||
isLocal <- lookupTypeName nameStr >>= maybe (pure False) isLocalName
|
isLocal <- lookupType nameStr >>= maybe (pure False) isLocalName
|
||||||
if isLocal then pure [] else m
|
if isLocal then pure [] else m
|
||||||
nameStr = toNameString (datatypeNameStatus datatype) (getDatatypeName (AST.Deserialize.datatypeName datatype))
|
nameStr = toNameString (datatypeNameStatus datatype) (getDatatypeName (AST.Deserialize.datatypeName datatype))
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,3 +1,4 @@
|
|||||||
|
-- Language definition for JSON, generated by ast-generate. Do not edit!
|
||||||
{-# LANGUAGE CPP #-}
|
{-# LANGUAGE CPP #-}
|
||||||
{-# LANGUAGE DataKinds #-}
|
{-# LANGUAGE DataKinds #-}
|
||||||
{-# LANGUAGE DeriveAnyClass #-}
|
{-# LANGUAGE DeriveAnyClass #-}
|
||||||
@ -17,18 +18,589 @@
|
|||||||
{-# LANGUAGE UndecidableInstances #-}
|
{-# LANGUAGE UndecidableInstances #-}
|
||||||
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
|
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
|
||||||
|
|
||||||
module Language.JSON.AST
|
module Language.JSON.AST (module Language.JSON.AST, getTestCorpusDir) where
|
||||||
( module Language.JSON.AST
|
|
||||||
, JSON.getTestCorpusDir
|
|
||||||
) where
|
|
||||||
|
|
||||||
import AST.GenerateSyntax
|
import qualified AST.Parse
|
||||||
import Language.Haskell.TH.Syntax (runIO)
|
import qualified AST.Token
|
||||||
import Prelude hiding (String)
|
import qualified AST.Traversable1.Class
|
||||||
import qualified TreeSitter.JSON as JSON (getNodeTypesPath, getTestCorpusDir, tree_sitter_json)
|
import qualified AST.Unmarshal
|
||||||
|
import qualified Data.Foldable
|
||||||
|
import qualified Data.List as Data.OldList
|
||||||
|
import qualified Data.Maybe as GHC.Maybe
|
||||||
|
import qualified Data.Text.Internal
|
||||||
|
import qualified Data.Traversable
|
||||||
|
import qualified GHC.Base
|
||||||
|
import qualified GHC.Generics
|
||||||
|
import qualified GHC.Records
|
||||||
|
import qualified GHC.Show
|
||||||
|
import TreeSitter.JSON (getTestCorpusDir)
|
||||||
|
import qualified TreeSitter.Node
|
||||||
|
import qualified Prelude as GHC.Classes
|
||||||
|
|
||||||
|
debugSymbolNames :: [GHC.Base.String]
|
||||||
|
debugSymbolNames = debugSymbolNames_0
|
||||||
|
|
||||||
|
debugSymbolNames_0 :: [GHC.Base.String]
|
||||||
|
debugSymbolNames_0 =
|
||||||
|
[ "end",
|
||||||
|
"_{",
|
||||||
|
"_,",
|
||||||
|
"_}",
|
||||||
|
"_:",
|
||||||
|
"_[",
|
||||||
|
"_]",
|
||||||
|
"_\"",
|
||||||
|
"_string_content_token1",
|
||||||
|
"escape_sequence",
|
||||||
|
"number",
|
||||||
|
"true",
|
||||||
|
"false",
|
||||||
|
"null",
|
||||||
|
"document",
|
||||||
|
"_value",
|
||||||
|
"object",
|
||||||
|
"pair",
|
||||||
|
"array",
|
||||||
|
"string",
|
||||||
|
"string_content",
|
||||||
|
"_object_repeat1",
|
||||||
|
"_array_repeat1",
|
||||||
|
"_string_content_repeat1"
|
||||||
|
]
|
||||||
|
|
||||||
|
newtype Value a = Value {getValue :: ((Array GHC.Generics.:+: False GHC.Generics.:+: Null GHC.Generics.:+: Number GHC.Generics.:+: Object GHC.Generics.:+: String GHC.Generics.:+: True) a)}
|
||||||
|
deriving newtype (AST.Unmarshal.SymbolMatching)
|
||||||
|
deriving stock (GHC.Generics.Generic, GHC.Generics.Generic1)
|
||||||
|
deriving anyclass
|
||||||
|
( forall a_1.
|
||||||
|
AST.Traversable1.Class.Traversable1 a_1
|
||||||
|
)
|
||||||
|
|
||||||
|
instance GHC.Records.HasField "ann" (Value a_2) a_2 where
|
||||||
|
getField = AST.Unmarshal.gann GHC.Base.. getValue
|
||||||
|
|
||||||
|
deriving instance GHC.Classes.Eq a_3 => GHC.Classes.Eq (Value a_3)
|
||||||
|
|
||||||
|
deriving instance GHC.Classes.Ord a_4 => GHC.Classes.Ord (Value a_4)
|
||||||
|
|
||||||
|
deriving instance GHC.Show.Show a_5 => GHC.Show.Show (Value a_5)
|
||||||
|
|
||||||
|
instance AST.Unmarshal.Unmarshal Value
|
||||||
|
|
||||||
|
instance Data.Foldable.Foldable Value where
|
||||||
|
foldMap = AST.Traversable1.Class.foldMapDefault1
|
||||||
|
|
||||||
|
instance GHC.Base.Functor Value where
|
||||||
|
fmap = AST.Traversable1.Class.fmapDefault1
|
||||||
|
|
||||||
|
instance Data.Traversable.Traversable Value where
|
||||||
|
traverse = AST.Traversable1.Class.traverseDefault1
|
||||||
|
|
||||||
|
data Array a = Array {ann :: a, extraChildren :: ([AST.Parse.Err (Value a)])}
|
||||||
|
deriving stock (GHC.Generics.Generic, GHC.Generics.Generic1)
|
||||||
|
deriving anyclass
|
||||||
|
( forall a_6.
|
||||||
|
AST.Traversable1.Class.Traversable1 a_6
|
||||||
|
)
|
||||||
|
|
||||||
|
instance AST.Unmarshal.SymbolMatching Array where
|
||||||
|
matchedSymbols _ = [18]
|
||||||
|
showFailure _ node_7 =
|
||||||
|
"expected "
|
||||||
|
GHC.Base.<> ( "array"
|
||||||
|
GHC.Base.<> ( " but got "
|
||||||
|
GHC.Base.<> ( if TreeSitter.Node.nodeSymbol node_7 GHC.Classes.== 65535
|
||||||
|
then "ERROR"
|
||||||
|
else Data.OldList.genericIndex debugSymbolNames (TreeSitter.Node.nodeSymbol node_7) GHC.Base.<> (" [" GHC.Base.<> (GHC.Show.show r1_8 GHC.Base.<> (", " GHC.Base.<> (GHC.Show.show c1_9 GHC.Base.<> ("] -" GHC.Base.<> (" [" GHC.Base.<> (GHC.Show.show r2_10 GHC.Base.<> (", " GHC.Base.<> (GHC.Show.show c2_11 GHC.Base.<> "]")))))))))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
where
|
||||||
|
TreeSitter.Node.TSPoint
|
||||||
|
r1_8
|
||||||
|
c1_9 = TreeSitter.Node.nodeStartPoint node_7
|
||||||
|
TreeSitter.Node.TSPoint
|
||||||
|
r2_10
|
||||||
|
c2_11 = TreeSitter.Node.nodeEndPoint node_7
|
||||||
|
|
||||||
|
deriving instance GHC.Classes.Eq a_12 => GHC.Classes.Eq (Array a_12)
|
||||||
|
|
||||||
|
deriving instance GHC.Classes.Ord a_13 => GHC.Classes.Ord (Array a_13)
|
||||||
|
|
||||||
|
deriving instance GHC.Show.Show a_14 => GHC.Show.Show (Array a_14)
|
||||||
|
|
||||||
|
instance AST.Unmarshal.Unmarshal Array
|
||||||
|
|
||||||
|
instance Data.Foldable.Foldable Array where
|
||||||
|
foldMap = AST.Traversable1.Class.foldMapDefault1
|
||||||
|
|
||||||
|
instance GHC.Base.Functor Array where
|
||||||
|
fmap = AST.Traversable1.Class.fmapDefault1
|
||||||
|
|
||||||
|
instance Data.Traversable.Traversable Array where
|
||||||
|
traverse = AST.Traversable1.Class.traverseDefault1
|
||||||
|
|
||||||
|
data Document a = Document {ann :: a, extraChildren :: (AST.Parse.Err (Value a))}
|
||||||
|
deriving stock (GHC.Generics.Generic, GHC.Generics.Generic1)
|
||||||
|
deriving anyclass
|
||||||
|
( forall a_15.
|
||||||
|
AST.Traversable1.Class.Traversable1 a_15
|
||||||
|
)
|
||||||
|
|
||||||
|
instance AST.Unmarshal.SymbolMatching Document where
|
||||||
|
matchedSymbols _ = [14]
|
||||||
|
showFailure _ node_16 =
|
||||||
|
"expected "
|
||||||
|
GHC.Base.<> ( "document"
|
||||||
|
GHC.Base.<> ( " but got "
|
||||||
|
GHC.Base.<> ( if TreeSitter.Node.nodeSymbol node_16 GHC.Classes.== 65535
|
||||||
|
then "ERROR"
|
||||||
|
else Data.OldList.genericIndex debugSymbolNames (TreeSitter.Node.nodeSymbol node_16) GHC.Base.<> (" [" GHC.Base.<> (GHC.Show.show r1_17 GHC.Base.<> (", " GHC.Base.<> (GHC.Show.show c1_18 GHC.Base.<> ("] -" GHC.Base.<> (" [" GHC.Base.<> (GHC.Show.show r2_19 GHC.Base.<> (", " GHC.Base.<> (GHC.Show.show c2_20 GHC.Base.<> "]")))))))))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
where
|
||||||
|
TreeSitter.Node.TSPoint
|
||||||
|
r1_17
|
||||||
|
c1_18 = TreeSitter.Node.nodeStartPoint node_16
|
||||||
|
TreeSitter.Node.TSPoint
|
||||||
|
r2_19
|
||||||
|
c2_20 = TreeSitter.Node.nodeEndPoint node_16
|
||||||
|
|
||||||
|
deriving instance GHC.Classes.Eq a_21 => GHC.Classes.Eq (Document a_21)
|
||||||
|
|
||||||
|
deriving instance GHC.Classes.Ord a_22 => GHC.Classes.Ord (Document a_22)
|
||||||
|
|
||||||
|
deriving instance GHC.Show.Show a_23 => GHC.Show.Show (Document a_23)
|
||||||
|
|
||||||
|
instance AST.Unmarshal.Unmarshal Document
|
||||||
|
|
||||||
|
instance Data.Foldable.Foldable Document where
|
||||||
|
foldMap = AST.Traversable1.Class.foldMapDefault1
|
||||||
|
|
||||||
|
instance GHC.Base.Functor Document where
|
||||||
|
fmap = AST.Traversable1.Class.fmapDefault1
|
||||||
|
|
||||||
|
instance Data.Traversable.Traversable Document where
|
||||||
|
traverse = AST.Traversable1.Class.traverseDefault1
|
||||||
|
|
||||||
|
data Object a = Object {ann :: a, extraChildren :: ([AST.Parse.Err (Pair a)])}
|
||||||
|
deriving stock (GHC.Generics.Generic, GHC.Generics.Generic1)
|
||||||
|
deriving anyclass
|
||||||
|
( forall a_24.
|
||||||
|
AST.Traversable1.Class.Traversable1 a_24
|
||||||
|
)
|
||||||
|
|
||||||
|
instance AST.Unmarshal.SymbolMatching Object where
|
||||||
|
matchedSymbols _ = [16]
|
||||||
|
showFailure _ node_25 =
|
||||||
|
"expected "
|
||||||
|
GHC.Base.<> ( "object"
|
||||||
|
GHC.Base.<> ( " but got "
|
||||||
|
GHC.Base.<> ( if TreeSitter.Node.nodeSymbol node_25 GHC.Classes.== 65535
|
||||||
|
then "ERROR"
|
||||||
|
else Data.OldList.genericIndex debugSymbolNames (TreeSitter.Node.nodeSymbol node_25) GHC.Base.<> (" [" GHC.Base.<> (GHC.Show.show r1_26 GHC.Base.<> (", " GHC.Base.<> (GHC.Show.show c1_27 GHC.Base.<> ("] -" GHC.Base.<> (" [" GHC.Base.<> (GHC.Show.show r2_28 GHC.Base.<> (", " GHC.Base.<> (GHC.Show.show c2_29 GHC.Base.<> "]")))))))))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
where
|
||||||
|
TreeSitter.Node.TSPoint
|
||||||
|
r1_26
|
||||||
|
c1_27 = TreeSitter.Node.nodeStartPoint node_25
|
||||||
|
TreeSitter.Node.TSPoint
|
||||||
|
r2_28
|
||||||
|
c2_29 = TreeSitter.Node.nodeEndPoint node_25
|
||||||
|
|
||||||
|
deriving instance GHC.Classes.Eq a_30 => GHC.Classes.Eq (Object a_30)
|
||||||
|
|
||||||
|
deriving instance GHC.Classes.Ord a_31 => GHC.Classes.Ord (Object a_31)
|
||||||
|
|
||||||
|
deriving instance GHC.Show.Show a_32 => GHC.Show.Show (Object a_32)
|
||||||
|
|
||||||
|
instance AST.Unmarshal.Unmarshal Object
|
||||||
|
|
||||||
|
instance Data.Foldable.Foldable Object where
|
||||||
|
foldMap = AST.Traversable1.Class.foldMapDefault1
|
||||||
|
|
||||||
|
instance GHC.Base.Functor Object where
|
||||||
|
fmap = AST.Traversable1.Class.fmapDefault1
|
||||||
|
|
||||||
|
instance Data.Traversable.Traversable Object where
|
||||||
|
traverse = AST.Traversable1.Class.traverseDefault1
|
||||||
|
|
||||||
|
data Pair a = Pair
|
||||||
|
{ ann :: a,
|
||||||
|
value :: (AST.Parse.Err (Value a)),
|
||||||
|
key :: (AST.Parse.Err ((Number GHC.Generics.:+: String) a))
|
||||||
|
}
|
||||||
|
deriving stock (GHC.Generics.Generic, GHC.Generics.Generic1)
|
||||||
|
deriving anyclass
|
||||||
|
( forall a_33.
|
||||||
|
AST.Traversable1.Class.Traversable1 a_33
|
||||||
|
)
|
||||||
|
|
||||||
|
instance AST.Unmarshal.SymbolMatching Pair where
|
||||||
|
matchedSymbols _ = [17]
|
||||||
|
showFailure _ node_34 =
|
||||||
|
"expected "
|
||||||
|
GHC.Base.<> ( "pair"
|
||||||
|
GHC.Base.<> ( " but got "
|
||||||
|
GHC.Base.<> ( if TreeSitter.Node.nodeSymbol node_34 GHC.Classes.== 65535
|
||||||
|
then "ERROR"
|
||||||
|
else Data.OldList.genericIndex debugSymbolNames (TreeSitter.Node.nodeSymbol node_34) GHC.Base.<> (" [" GHC.Base.<> (GHC.Show.show r1_35 GHC.Base.<> (", " GHC.Base.<> (GHC.Show.show c1_36 GHC.Base.<> ("] -" GHC.Base.<> (" [" GHC.Base.<> (GHC.Show.show r2_37 GHC.Base.<> (", " GHC.Base.<> (GHC.Show.show c2_38 GHC.Base.<> "]")))))))))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
where
|
||||||
|
TreeSitter.Node.TSPoint
|
||||||
|
r1_35
|
||||||
|
c1_36 = TreeSitter.Node.nodeStartPoint node_34
|
||||||
|
TreeSitter.Node.TSPoint
|
||||||
|
r2_37
|
||||||
|
c2_38 = TreeSitter.Node.nodeEndPoint node_34
|
||||||
|
|
||||||
|
deriving instance GHC.Classes.Eq a_39 => GHC.Classes.Eq (Pair a_39)
|
||||||
|
|
||||||
|
deriving instance GHC.Classes.Ord a_40 => GHC.Classes.Ord (Pair a_40)
|
||||||
|
|
||||||
|
deriving instance GHC.Show.Show a_41 => GHC.Show.Show (Pair a_41)
|
||||||
|
|
||||||
|
instance AST.Unmarshal.Unmarshal Pair
|
||||||
|
|
||||||
|
instance Data.Foldable.Foldable Pair where
|
||||||
|
foldMap = AST.Traversable1.Class.foldMapDefault1
|
||||||
|
|
||||||
|
instance GHC.Base.Functor Pair where
|
||||||
|
fmap = AST.Traversable1.Class.fmapDefault1
|
||||||
|
|
||||||
|
instance Data.Traversable.Traversable Pair where
|
||||||
|
traverse = AST.Traversable1.Class.traverseDefault1
|
||||||
|
|
||||||
|
data String a = String
|
||||||
|
{ ann :: a,
|
||||||
|
extraChildren :: (GHC.Maybe.Maybe (AST.Parse.Err (StringContent a)))
|
||||||
|
}
|
||||||
|
deriving stock (GHC.Generics.Generic, GHC.Generics.Generic1)
|
||||||
|
deriving anyclass
|
||||||
|
( forall a_42.
|
||||||
|
AST.Traversable1.Class.Traversable1 a_42
|
||||||
|
)
|
||||||
|
|
||||||
|
instance AST.Unmarshal.SymbolMatching String where
|
||||||
|
matchedSymbols _ = [19]
|
||||||
|
showFailure _ node_43 =
|
||||||
|
"expected "
|
||||||
|
GHC.Base.<> ( "string"
|
||||||
|
GHC.Base.<> ( " but got "
|
||||||
|
GHC.Base.<> ( if TreeSitter.Node.nodeSymbol node_43 GHC.Classes.== 65535
|
||||||
|
then "ERROR"
|
||||||
|
else Data.OldList.genericIndex debugSymbolNames (TreeSitter.Node.nodeSymbol node_43) GHC.Base.<> (" [" GHC.Base.<> (GHC.Show.show r1_44 GHC.Base.<> (", " GHC.Base.<> (GHC.Show.show c1_45 GHC.Base.<> ("] -" GHC.Base.<> (" [" GHC.Base.<> (GHC.Show.show r2_46 GHC.Base.<> (", " GHC.Base.<> (GHC.Show.show c2_47 GHC.Base.<> "]")))))))))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
where
|
||||||
|
TreeSitter.Node.TSPoint
|
||||||
|
r1_44
|
||||||
|
c1_45 = TreeSitter.Node.nodeStartPoint node_43
|
||||||
|
TreeSitter.Node.TSPoint
|
||||||
|
r2_46
|
||||||
|
c2_47 = TreeSitter.Node.nodeEndPoint node_43
|
||||||
|
|
||||||
|
deriving instance GHC.Classes.Eq a_48 => GHC.Classes.Eq (String a_48)
|
||||||
|
|
||||||
|
deriving instance GHC.Classes.Ord a_49 => GHC.Classes.Ord (String a_49)
|
||||||
|
|
||||||
|
deriving instance GHC.Show.Show a_50 => GHC.Show.Show (String a_50)
|
||||||
|
|
||||||
|
instance AST.Unmarshal.Unmarshal String
|
||||||
|
|
||||||
|
instance Data.Foldable.Foldable String where
|
||||||
|
foldMap = AST.Traversable1.Class.foldMapDefault1
|
||||||
|
|
||||||
|
instance GHC.Base.Functor String where
|
||||||
|
fmap = AST.Traversable1.Class.fmapDefault1
|
||||||
|
|
||||||
|
instance Data.Traversable.Traversable String where
|
||||||
|
traverse = AST.Traversable1.Class.traverseDefault1
|
||||||
|
|
||||||
|
data StringContent a = StringContent
|
||||||
|
{ ann :: a,
|
||||||
|
extraChildren :: ([AST.Parse.Err (EscapeSequence a)])
|
||||||
|
}
|
||||||
|
deriving stock (GHC.Generics.Generic, GHC.Generics.Generic1)
|
||||||
|
deriving anyclass
|
||||||
|
( forall a_51.
|
||||||
|
AST.Traversable1.Class.Traversable1 a_51
|
||||||
|
)
|
||||||
|
|
||||||
|
instance AST.Unmarshal.SymbolMatching StringContent where
|
||||||
|
matchedSymbols _ = [20]
|
||||||
|
showFailure _ node_52 =
|
||||||
|
"expected "
|
||||||
|
GHC.Base.<> ( "string_content"
|
||||||
|
GHC.Base.<> ( " but got "
|
||||||
|
GHC.Base.<> ( if TreeSitter.Node.nodeSymbol node_52 GHC.Classes.== 65535
|
||||||
|
then "ERROR"
|
||||||
|
else Data.OldList.genericIndex debugSymbolNames (TreeSitter.Node.nodeSymbol node_52) GHC.Base.<> (" [" GHC.Base.<> (GHC.Show.show r1_53 GHC.Base.<> (", " GHC.Base.<> (GHC.Show.show c1_54 GHC.Base.<> ("] -" GHC.Base.<> (" [" GHC.Base.<> (GHC.Show.show r2_55 GHC.Base.<> (", " GHC.Base.<> (GHC.Show.show c2_56 GHC.Base.<> "]")))))))))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
where
|
||||||
|
TreeSitter.Node.TSPoint
|
||||||
|
r1_53
|
||||||
|
c1_54 = TreeSitter.Node.nodeStartPoint node_52
|
||||||
|
TreeSitter.Node.TSPoint
|
||||||
|
r2_55
|
||||||
|
c2_56 = TreeSitter.Node.nodeEndPoint node_52
|
||||||
|
|
||||||
|
deriving instance GHC.Classes.Eq a_57 => GHC.Classes.Eq (StringContent a_57)
|
||||||
|
|
||||||
|
deriving instance GHC.Classes.Ord a_58 => GHC.Classes.Ord (StringContent a_58)
|
||||||
|
|
||||||
|
deriving instance GHC.Show.Show a_59 => GHC.Show.Show (StringContent a_59)
|
||||||
|
|
||||||
|
instance AST.Unmarshal.Unmarshal StringContent
|
||||||
|
|
||||||
|
instance Data.Foldable.Foldable StringContent where
|
||||||
|
foldMap = AST.Traversable1.Class.foldMapDefault1
|
||||||
|
|
||||||
|
instance GHC.Base.Functor StringContent where
|
||||||
|
fmap = AST.Traversable1.Class.fmapDefault1
|
||||||
|
|
||||||
|
instance Data.Traversable.Traversable StringContent where
|
||||||
|
traverse = AST.Traversable1.Class.traverseDefault1
|
||||||
|
|
||||||
|
type AnonymousDQuote = AST.Token.Token "\"" 7
|
||||||
|
|
||||||
|
type AnonymousComma = AST.Token.Token "," 2
|
||||||
|
|
||||||
|
type AnonymousColon = AST.Token.Token ":" 4
|
||||||
|
|
||||||
|
type AnonymousLBracket = AST.Token.Token "[" 5
|
||||||
|
|
||||||
|
type AnonymousRBracket = AST.Token.Token "]" 6
|
||||||
|
|
||||||
|
data EscapeSequence a = EscapeSequence {ann :: a, text :: Data.Text.Internal.Text}
|
||||||
|
deriving stock (GHC.Generics.Generic, GHC.Generics.Generic1)
|
||||||
|
deriving anyclass
|
||||||
|
( forall a_60.
|
||||||
|
AST.Traversable1.Class.Traversable1 a_60
|
||||||
|
)
|
||||||
|
|
||||||
|
instance AST.Unmarshal.SymbolMatching EscapeSequence where
|
||||||
|
matchedSymbols _ = [9]
|
||||||
|
showFailure _ node_61 =
|
||||||
|
"expected "
|
||||||
|
GHC.Base.<> ( "escape_sequence"
|
||||||
|
GHC.Base.<> ( " but got "
|
||||||
|
GHC.Base.<> ( if TreeSitter.Node.nodeSymbol node_61 GHC.Classes.== 65535
|
||||||
|
then "ERROR"
|
||||||
|
else Data.OldList.genericIndex debugSymbolNames (TreeSitter.Node.nodeSymbol node_61) GHC.Base.<> (" [" GHC.Base.<> (GHC.Show.show r1_62 GHC.Base.<> (", " GHC.Base.<> (GHC.Show.show c1_63 GHC.Base.<> ("] -" GHC.Base.<> (" [" GHC.Base.<> (GHC.Show.show r2_64 GHC.Base.<> (", " GHC.Base.<> (GHC.Show.show c2_65 GHC.Base.<> "]")))))))))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
where
|
||||||
|
TreeSitter.Node.TSPoint
|
||||||
|
r1_62
|
||||||
|
c1_63 = TreeSitter.Node.nodeStartPoint node_61
|
||||||
|
TreeSitter.Node.TSPoint
|
||||||
|
r2_64
|
||||||
|
c2_65 = TreeSitter.Node.nodeEndPoint node_61
|
||||||
|
|
||||||
|
deriving instance GHC.Classes.Eq a_66 => GHC.Classes.Eq (EscapeSequence a_66)
|
||||||
|
|
||||||
|
deriving instance GHC.Classes.Ord a_67 => GHC.Classes.Ord (EscapeSequence a_67)
|
||||||
|
|
||||||
|
deriving instance GHC.Show.Show a_68 => GHC.Show.Show (EscapeSequence a_68)
|
||||||
|
|
||||||
|
instance AST.Unmarshal.Unmarshal EscapeSequence
|
||||||
|
|
||||||
|
instance Data.Foldable.Foldable EscapeSequence where
|
||||||
|
foldMap = AST.Traversable1.Class.foldMapDefault1
|
||||||
|
|
||||||
|
instance GHC.Base.Functor EscapeSequence where
|
||||||
|
fmap = AST.Traversable1.Class.fmapDefault1
|
||||||
|
|
||||||
|
instance Data.Traversable.Traversable EscapeSequence where
|
||||||
|
traverse = AST.Traversable1.Class.traverseDefault1
|
||||||
|
|
||||||
|
data False a = False {ann :: a, text :: Data.Text.Internal.Text}
|
||||||
|
deriving stock (GHC.Generics.Generic, GHC.Generics.Generic1)
|
||||||
|
deriving anyclass
|
||||||
|
( forall a_69.
|
||||||
|
AST.Traversable1.Class.Traversable1 a_69
|
||||||
|
)
|
||||||
|
|
||||||
|
instance AST.Unmarshal.SymbolMatching False where
|
||||||
|
matchedSymbols _ = [12]
|
||||||
|
showFailure _ node_70 =
|
||||||
|
"expected "
|
||||||
|
GHC.Base.<> ( "false"
|
||||||
|
GHC.Base.<> ( " but got "
|
||||||
|
GHC.Base.<> ( if TreeSitter.Node.nodeSymbol node_70 GHC.Classes.== 65535
|
||||||
|
then "ERROR"
|
||||||
|
else Data.OldList.genericIndex debugSymbolNames (TreeSitter.Node.nodeSymbol node_70) GHC.Base.<> (" [" GHC.Base.<> (GHC.Show.show r1_71 GHC.Base.<> (", " GHC.Base.<> (GHC.Show.show c1_72 GHC.Base.<> ("] -" GHC.Base.<> (" [" GHC.Base.<> (GHC.Show.show r2_73 GHC.Base.<> (", " GHC.Base.<> (GHC.Show.show c2_74 GHC.Base.<> "]")))))))))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
where
|
||||||
|
TreeSitter.Node.TSPoint
|
||||||
|
r1_71
|
||||||
|
c1_72 = TreeSitter.Node.nodeStartPoint node_70
|
||||||
|
TreeSitter.Node.TSPoint
|
||||||
|
r2_73
|
||||||
|
c2_74 = TreeSitter.Node.nodeEndPoint node_70
|
||||||
|
|
||||||
|
deriving instance GHC.Classes.Eq a_75 => GHC.Classes.Eq (False a_75)
|
||||||
|
|
||||||
|
deriving instance GHC.Classes.Ord a_76 => GHC.Classes.Ord (False a_76)
|
||||||
|
|
||||||
|
deriving instance GHC.Show.Show a_77 => GHC.Show.Show (False a_77)
|
||||||
|
|
||||||
|
instance AST.Unmarshal.Unmarshal False
|
||||||
|
|
||||||
|
instance Data.Foldable.Foldable False where
|
||||||
|
foldMap = AST.Traversable1.Class.foldMapDefault1
|
||||||
|
|
||||||
|
instance GHC.Base.Functor False where
|
||||||
|
fmap = AST.Traversable1.Class.fmapDefault1
|
||||||
|
|
||||||
|
instance Data.Traversable.Traversable False where
|
||||||
|
traverse = AST.Traversable1.Class.traverseDefault1
|
||||||
|
|
||||||
|
data Null a = Null {ann :: a, text :: Data.Text.Internal.Text}
|
||||||
|
deriving stock (GHC.Generics.Generic, GHC.Generics.Generic1)
|
||||||
|
deriving anyclass
|
||||||
|
( forall a_78.
|
||||||
|
AST.Traversable1.Class.Traversable1 a_78
|
||||||
|
)
|
||||||
|
|
||||||
|
instance AST.Unmarshal.SymbolMatching Null where
|
||||||
|
matchedSymbols _ = [13]
|
||||||
|
showFailure _ node_79 =
|
||||||
|
"expected "
|
||||||
|
GHC.Base.<> ( "null"
|
||||||
|
GHC.Base.<> ( " but got "
|
||||||
|
GHC.Base.<> ( if TreeSitter.Node.nodeSymbol node_79 GHC.Classes.== 65535
|
||||||
|
then "ERROR"
|
||||||
|
else Data.OldList.genericIndex debugSymbolNames (TreeSitter.Node.nodeSymbol node_79) GHC.Base.<> (" [" GHC.Base.<> (GHC.Show.show r1_80 GHC.Base.<> (", " GHC.Base.<> (GHC.Show.show c1_81 GHC.Base.<> ("] -" GHC.Base.<> (" [" GHC.Base.<> (GHC.Show.show r2_82 GHC.Base.<> (", " GHC.Base.<> (GHC.Show.show c2_83 GHC.Base.<> "]")))))))))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
where
|
||||||
|
TreeSitter.Node.TSPoint
|
||||||
|
r1_80
|
||||||
|
c1_81 = TreeSitter.Node.nodeStartPoint node_79
|
||||||
|
TreeSitter.Node.TSPoint
|
||||||
|
r2_82
|
||||||
|
c2_83 = TreeSitter.Node.nodeEndPoint node_79
|
||||||
|
|
||||||
|
deriving instance GHC.Classes.Eq a_84 => GHC.Classes.Eq (Null a_84)
|
||||||
|
|
||||||
|
deriving instance GHC.Classes.Ord a_85 => GHC.Classes.Ord (Null a_85)
|
||||||
|
|
||||||
|
deriving instance GHC.Show.Show a_86 => GHC.Show.Show (Null a_86)
|
||||||
|
|
||||||
|
instance AST.Unmarshal.Unmarshal Null
|
||||||
|
|
||||||
|
instance Data.Foldable.Foldable Null where
|
||||||
|
foldMap = AST.Traversable1.Class.foldMapDefault1
|
||||||
|
|
||||||
|
instance GHC.Base.Functor Null where
|
||||||
|
fmap = AST.Traversable1.Class.fmapDefault1
|
||||||
|
|
||||||
|
instance Data.Traversable.Traversable Null where
|
||||||
|
traverse = AST.Traversable1.Class.traverseDefault1
|
||||||
|
|
||||||
|
data Number a = Number {ann :: a, text :: Data.Text.Internal.Text}
|
||||||
|
deriving stock (GHC.Generics.Generic, GHC.Generics.Generic1)
|
||||||
|
deriving anyclass
|
||||||
|
( forall a_87.
|
||||||
|
AST.Traversable1.Class.Traversable1 a_87
|
||||||
|
)
|
||||||
|
|
||||||
|
instance AST.Unmarshal.SymbolMatching Number where
|
||||||
|
matchedSymbols _ = [10]
|
||||||
|
showFailure _ node_88 =
|
||||||
|
"expected "
|
||||||
|
GHC.Base.<> ( "number"
|
||||||
|
GHC.Base.<> ( " but got "
|
||||||
|
GHC.Base.<> ( if TreeSitter.Node.nodeSymbol node_88 GHC.Classes.== 65535
|
||||||
|
then "ERROR"
|
||||||
|
else Data.OldList.genericIndex debugSymbolNames (TreeSitter.Node.nodeSymbol node_88) GHC.Base.<> (" [" GHC.Base.<> (GHC.Show.show r1_89 GHC.Base.<> (", " GHC.Base.<> (GHC.Show.show c1_90 GHC.Base.<> ("] -" GHC.Base.<> (" [" GHC.Base.<> (GHC.Show.show r2_91 GHC.Base.<> (", " GHC.Base.<> (GHC.Show.show c2_92 GHC.Base.<> "]")))))))))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
where
|
||||||
|
TreeSitter.Node.TSPoint
|
||||||
|
r1_89
|
||||||
|
c1_90 = TreeSitter.Node.nodeStartPoint node_88
|
||||||
|
TreeSitter.Node.TSPoint
|
||||||
|
r2_91
|
||||||
|
c2_92 = TreeSitter.Node.nodeEndPoint node_88
|
||||||
|
|
||||||
|
deriving instance GHC.Classes.Eq a_93 => GHC.Classes.Eq (Number a_93)
|
||||||
|
|
||||||
|
deriving instance GHC.Classes.Ord a_94 => GHC.Classes.Ord (Number a_94)
|
||||||
|
|
||||||
|
deriving instance GHC.Show.Show a_95 => GHC.Show.Show (Number a_95)
|
||||||
|
|
||||||
|
instance AST.Unmarshal.Unmarshal Number
|
||||||
|
|
||||||
|
instance Data.Foldable.Foldable Number where
|
||||||
|
foldMap = AST.Traversable1.Class.foldMapDefault1
|
||||||
|
|
||||||
|
instance GHC.Base.Functor Number where
|
||||||
|
fmap = AST.Traversable1.Class.fmapDefault1
|
||||||
|
|
||||||
|
instance Data.Traversable.Traversable Number where
|
||||||
|
traverse = AST.Traversable1.Class.traverseDefault1
|
||||||
|
|
||||||
|
data True a = True {ann :: a, text :: Data.Text.Internal.Text}
|
||||||
|
deriving stock (GHC.Generics.Generic, GHC.Generics.Generic1)
|
||||||
|
deriving anyclass
|
||||||
|
( forall a_96.
|
||||||
|
AST.Traversable1.Class.Traversable1 a_96
|
||||||
|
)
|
||||||
|
|
||||||
|
instance AST.Unmarshal.SymbolMatching True where
|
||||||
|
matchedSymbols _ = [11]
|
||||||
|
showFailure _ node_97 =
|
||||||
|
"expected "
|
||||||
|
GHC.Base.<> ( "true"
|
||||||
|
GHC.Base.<> ( " but got "
|
||||||
|
GHC.Base.<> ( if TreeSitter.Node.nodeSymbol node_97 GHC.Classes.== 65535
|
||||||
|
then "ERROR"
|
||||||
|
else Data.OldList.genericIndex debugSymbolNames (TreeSitter.Node.nodeSymbol node_97) GHC.Base.<> (" [" GHC.Base.<> (GHC.Show.show r1_98 GHC.Base.<> (", " GHC.Base.<> (GHC.Show.show c1_99 GHC.Base.<> ("] -" GHC.Base.<> (" [" GHC.Base.<> (GHC.Show.show r2_100 GHC.Base.<> (", " GHC.Base.<> (GHC.Show.show c2_101 GHC.Base.<> "]")))))))))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
where
|
||||||
|
TreeSitter.Node.TSPoint
|
||||||
|
r1_98
|
||||||
|
c1_99 = TreeSitter.Node.nodeStartPoint node_97
|
||||||
|
TreeSitter.Node.TSPoint
|
||||||
|
r2_100
|
||||||
|
c2_101 = TreeSitter.Node.nodeEndPoint node_97
|
||||||
|
|
||||||
|
deriving instance GHC.Classes.Eq a_102 => GHC.Classes.Eq (True a_102)
|
||||||
|
|
||||||
|
deriving instance GHC.Classes.Ord a_103 => GHC.Classes.Ord (True a_103)
|
||||||
|
|
||||||
|
deriving instance GHC.Show.Show a_104 => GHC.Show.Show (True a_104)
|
||||||
|
|
||||||
|
instance AST.Unmarshal.Unmarshal True
|
||||||
|
|
||||||
|
instance Data.Foldable.Foldable True where
|
||||||
|
foldMap = AST.Traversable1.Class.foldMapDefault1
|
||||||
|
|
||||||
|
instance GHC.Base.Functor True where
|
||||||
|
fmap = AST.Traversable1.Class.fmapDefault1
|
||||||
|
|
||||||
|
instance Data.Traversable.Traversable True where
|
||||||
|
traverse = AST.Traversable1.Class.traverseDefault1
|
||||||
|
|
||||||
|
type AnonymousLBrace = AST.Token.Token "{" 1
|
||||||
|
|
||||||
|
type AnonymousRBrace = AST.Token.Token "}" 3
|
||||||
|
|
||||||
#ifdef NODE_TYPES_PATH
|
|
||||||
astDeclarationsForLanguage JSON.tree_sitter_json NODE_TYPES_PATH
|
|
||||||
#else
|
|
||||||
runIO JSON.getNodeTypesPath >>= astDeclarationsForLanguage JSON.tree_sitter_json
|
|
||||||
#endif
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -3,12 +3,13 @@ packages:
|
|||||||
- github: antitypical/fused-syntax
|
- github: antitypical/fused-syntax
|
||||||
commit: "4a383d57c8fd7592f54a33f43eb9666314a6e80e"
|
commit: "4a383d57c8fd7592f54a33f43eb9666314a6e80e"
|
||||||
sha256: "aa345f8f04a12beaf8f07620467dee06370b72c763cf2d1c60556878b226fafc"
|
sha256: "aa345f8f04a12beaf8f07620467dee06370b72c763cf2d1c60556878b226fafc"
|
||||||
|
- Interpolation-0.3.0
|
||||||
- fused-effects-1.1.0.0
|
- fused-effects-1.1.0.0
|
||||||
- fused-effects-exceptions-1.1.0.0
|
- fused-effects-exceptions-1.1.0.0
|
||||||
- fused-effects-readline-0.1.0.0
|
- fused-effects-readline-0.1.0.0
|
||||||
- semilattices-0.0.0.4
|
|
||||||
- haskeline-0.8.0.0
|
- haskeline-0.8.0.0
|
||||||
- tree-sitter-0.9.0.2
|
|
||||||
- unliftio-core-0.2.0.1
|
|
||||||
- lingo-0.5.0.1
|
- lingo-0.5.0.1
|
||||||
- proto-lens-jsonpb-0.2.0.2
|
- proto-lens-jsonpb-0.2.0.2
|
||||||
|
- semilattices-0.0.0.4
|
||||||
|
- tree-sitter-0.9.0.2
|
||||||
|
- unliftio-core-0.2.0.1
|
||||||
|
198
stackage_snapshot.json
Normal file
198
stackage_snapshot.json
Normal file
@ -0,0 +1,198 @@
|
|||||||
|
{
|
||||||
|
"__GENERATED_FILE_DO_NOT_MODIFY_MANUALLY": -274529831,
|
||||||
|
"all-cabal-hashes": "https://raw.githubusercontent.com/commercialhaskell/all-cabal-hashes/a43da66660b6aa52432dc7fc34835ff9b347921b",
|
||||||
|
"resolved": {
|
||||||
|
"Cabal": {"dependencies":[],"location":{"type":"core"},"name":"Cabal","version":"3.2.0.0"},
|
||||||
|
"Glob": {"dependencies":["base","containers","directory","dlist","filepath","transformers","transformers-compat"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/Glob-0.10.1/Glob-0.10.1.tar.gz"},"name":"Glob","pinned":{"url":["https://hackage.haskell.org/package/Glob-0.10.1/Glob-0.10.1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/Glob-0.10.1.tar.gz"],"sha256":"cae4476d944947010705e0b00cf3e36c90ef407f968861f6771b931056b6d315","cabal-sha256":"424bf82768d0471562b34ffcac6b73e658f655aac957dfbcbb945603899a40fd"},"version":"0.10.1"},
|
||||||
|
"HUnit": {"dependencies":["base","call-stack","deepseq"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/HUnit-1.6.0.0/HUnit-1.6.0.0.tar.gz"},"name":"HUnit","pinned":{"url":["https://hackage.haskell.org/package/HUnit-1.6.0.0/HUnit-1.6.0.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/HUnit-1.6.0.0.tar.gz"],"sha256":"7448e6b966e98e84b7627deba23f71b508e9a61e7bc571d74304a25d30e6d0de","cabal-sha256":"8014b27c884becd8041214a1ab263fa92244ca62700a911aff604a1047869298"},"version":"1.6.0.0"},
|
||||||
|
"Only": {"dependencies":["base","deepseq"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/Only-0.1/Only-0.1.tar.gz"},"name":"Only","pinned":{"url":["https://hackage.haskell.org/package/Only-0.1/Only-0.1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/Only-0.1.tar.gz"],"sha256":"ab7aa193e8c257d3bda6b0b3c1cbcf74cdaa85ab08cb20c2dd62ba248c1ab265","cabal-sha256":"f92f5da97e647451f1ee7f5bf44914fb75062d08ccd3f36b2000d649c63d13aa"},"version":"0.1"},
|
||||||
|
"QuickCheck": {"dependencies":["base","containers","deepseq","random","splitmix","template-haskell","transformers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/QuickCheck-2.13.2/QuickCheck-2.13.2.tar.gz"},"name":"QuickCheck","pinned":{"url":["https://hackage.haskell.org/package/QuickCheck-2.13.2/QuickCheck-2.13.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/QuickCheck-2.13.2.tar.gz"],"sha256":"7b560baa5853de777702dc23a6f2126ae4adbfdab163295bc56323a706914610","cabal-sha256":"636e7265bf75122e7e2f97627c47aad3b772ee3b35b134cafb6095116ce8d07a"},"version":"2.13.2"},
|
||||||
|
"StateVar": {"dependencies":["base","stm","transformers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/StateVar-1.2/StateVar-1.2.tar.gz"},"name":"StateVar","pinned":{"url":["https://hackage.haskell.org/package/StateVar-1.2/StateVar-1.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/StateVar-1.2.tar.gz"],"sha256":"afc036021fcd38f15fcc4af392a3e57017d5ddcc926e99391dbfc8c4e6375f8b","cabal-sha256":"9ab3e4a0e252d28bc2f799c83e0725c3e23e8d3b722cff0fdb9822e64b6c16ac"},"version":"1.2"},
|
||||||
|
"adjunctions": {"dependencies":["array","base","comonad","containers","contravariant","distributive","free","mtl","profunctors","semigroupoids","semigroups","tagged","transformers","transformers-compat","void"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/adjunctions-4.4/adjunctions-4.4.tar.gz"},"name":"adjunctions","pinned":{"url":["https://hackage.haskell.org/package/adjunctions-4.4/adjunctions-4.4.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/adjunctions-4.4.tar.gz"],"sha256":"507c2ef55337ae61c805f8cbc1213dfd7d2b85187342675d662254b8d8a16ae9","cabal-sha256":"2738dd5f5d5e93749adb14a05472e58a96a75d0f299e46371c6f46dc4e97daf9"},"version":"4.4"},
|
||||||
|
"aeson": {"dependencies":["attoparsec","base","base-compat-batteries","bytestring","containers","data-fix","deepseq","dlist","ghc-prim","hashable","primitive","scientific","strict","tagged","template-haskell","text","th-abstraction","these","time","time-compat","unordered-containers","uuid-types","vector"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/aeson-1.5.3.0/aeson-1.5.3.0.tar.gz"},"name":"aeson","pinned":{"url":["https://hackage.haskell.org/package/aeson-1.5.3.0/aeson-1.5.3.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/aeson-1.5.3.0.tar.gz"],"sha256":"958ef96a31ad0807e307f92d61a2b51827f7b06afed52cf06f76c64c6aed986a","cabal-sha256":"05496710de6ae694e55dc77dbdaf7503f56c24e4aecc06045e42e75a02df8bc4"},"version":"1.5.3.0"},
|
||||||
|
"aeson-pretty": {"dependencies":["aeson","attoparsec","base","base-compat","bytestring","cmdargs","scientific","text","unordered-containers","vector"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/aeson-pretty-0.8.8/aeson-pretty-0.8.8.tar.gz"},"name":"aeson-pretty","pinned":{"url":["https://hackage.haskell.org/package/aeson-pretty-0.8.8/aeson-pretty-0.8.8.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/aeson-pretty-0.8.8.tar.gz"],"sha256":"81cea61cb6dcf32c3f0529ea5cfc98dbea3894152d7f2d9fe1cb051f927ec726","cabal-sha256":"9924a16d0c362ff59dd6d5b875749ff5d599d2688f89d080388a0014714441ef"},"version":"0.8.8"},
|
||||||
|
"algebraic-graphs": {"dependencies":["array","base","containers","deepseq","mtl","transformers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/algebraic-graphs-0.5/algebraic-graphs-0.5.tar.gz"},"name":"algebraic-graphs","pinned":{"url":["https://hackage.haskell.org/package/algebraic-graphs-0.5/algebraic-graphs-0.5.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/algebraic-graphs-0.5.tar.gz"],"sha256":"89b9fecf8245476ec823355125fcb95decf41fd9784e807d7bd0d09f0a79c50b","cabal-sha256":"6eeec5ed1687ff7aa916e7bf9f02f51aaabde6f314dc0b7b1a84156974d7da73"},"version":"0.5"},
|
||||||
|
"ansi-terminal": {"dependencies":["base","colour"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/ansi-terminal-0.10.3/ansi-terminal-0.10.3.tar.gz"},"name":"ansi-terminal","pinned":{"url":["https://hackage.haskell.org/package/ansi-terminal-0.10.3/ansi-terminal-0.10.3.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/ansi-terminal-0.10.3.tar.gz"],"sha256":"fa2e2e32dfad29835aa7fd442bbe233e07d97e933223a001fe5efa562535b57c","cabal-sha256":"e2fbcef5f980dc234c7ad8e2fa433b0e8109132c9e643bc40ea5608cd5697797"},"version":"0.10.3"},
|
||||||
|
"ansi-wl-pprint": {"dependencies":["ansi-terminal","base"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/ansi-wl-pprint-0.6.9/ansi-wl-pprint-0.6.9.tar.gz"},"name":"ansi-wl-pprint","pinned":{"url":["https://hackage.haskell.org/package/ansi-wl-pprint-0.6.9/ansi-wl-pprint-0.6.9.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/ansi-wl-pprint-0.6.9.tar.gz"],"sha256":"a7b2e8e7cd3f02f2954e8b17dc60a0ccd889f49e2068ebb15abfa1d42f7a4eac","cabal-sha256":"20d30674f137d43aa0279c2c2cc5e45a5f1c3c57e301852494906158b6313bf7"},"version":"0.6.9"},
|
||||||
|
"array": {"dependencies":[],"location":{"type":"core"},"name":"array","version":"0.5.4.0"},
|
||||||
|
"assoc": {"dependencies":["base","bifunctors","tagged"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/assoc-1.0.2/assoc-1.0.2.tar.gz"},"name":"assoc","pinned":{"url":["https://hackage.haskell.org/package/assoc-1.0.2/assoc-1.0.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/assoc-1.0.2.tar.gz"],"sha256":"d8988dc6e8718c7a3456515b769c9336aeeec730cf86fc5175247969ff8f144f","cabal-sha256":"0be532f389dcaf4969c9e1066e1dca41b08ca4272d1b88450f552281d93106cb"},"version":"1.0.2"},
|
||||||
|
"async": {"dependencies":["base","hashable","stm"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/async-2.2.2/async-2.2.2.tar.gz"},"name":"async","pinned":{"url":["https://hackage.haskell.org/package/async-2.2.2/async-2.2.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/async-2.2.2.tar.gz"],"sha256":"4b4ab1ac82c45144d82c6daf6cb6ba45eab9957dad44787fa5e869e23d73bbff","cabal-sha256":"a178c166856da7ff22fe4500337b54812e94fd2059409452187d72e057ede9cd"},"version":"2.2.2"},
|
||||||
|
"attoparsec": {"dependencies":["array","base","bytestring","containers","deepseq","scientific","text","transformers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/attoparsec-0.13.2.4/attoparsec-0.13.2.4.tar.gz"},"name":"attoparsec","pinned":{"url":["https://hackage.haskell.org/package/attoparsec-0.13.2.4/attoparsec-0.13.2.4.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/attoparsec-0.13.2.4.tar.gz"],"sha256":"ba66cd6de1749ec92568db1b9c905b43a849f0ad918d45d7b594407a02ebefb2","cabal-sha256":"e10c2a5070a344a0973e6f9486d148c690b6955468cfd61ee09a41b5adc48873"},"version":"0.13.2.4"},
|
||||||
|
"base": {"dependencies":[],"location":{"type":"core"},"name":"base","version":"4.14.0.0"},
|
||||||
|
"base-compat": {"dependencies":["base","unix"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/base-compat-0.11.1/base-compat-0.11.1.tar.gz"},"name":"base-compat","pinned":{"url":["https://hackage.haskell.org/package/base-compat-0.11.1/base-compat-0.11.1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/base-compat-0.11.1.tar.gz"],"sha256":"356f1542ec93e7192a9073d32a8ef1e48194275495dcec7fb0d241f4baaf6d36","cabal-sha256":"e49c1ce84f556621ef1142a169e4349049c516f5b3e3c3ec6830be503e7d4a93"},"version":"0.11.1"},
|
||||||
|
"base-compat-batteries": {"dependencies":["base","base-compat"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/base-compat-batteries-0.11.1/base-compat-batteries-0.11.1.tar.gz"},"name":"base-compat-batteries","pinned":{"url":["https://hackage.haskell.org/package/base-compat-batteries-0.11.1/base-compat-batteries-0.11.1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/base-compat-batteries-0.11.1.tar.gz"],"sha256":"caf66fed3c0a3b0437692cad18c93a7074e8524a86b8be1ce04d0a18cbf6aed8","cabal-sha256":"2763af26f6bd118dc278b805988acc792443f08bd77da03ac5c438c2b1ab4aab"},"version":"0.11.1"},
|
||||||
|
"base-orphans": {"dependencies":["base","ghc-prim"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/base-orphans-0.8.2/base-orphans-0.8.2.tar.gz"},"name":"base-orphans","pinned":{"url":["https://hackage.haskell.org/package/base-orphans-0.8.2/base-orphans-0.8.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/base-orphans-0.8.2.tar.gz"],"sha256":"2a8062385e5d5dee418428a22c72b9391557bc1fe2f93bd643f7754b36b9eb01","cabal-sha256":"40ef37ed043aac2cbb6c538fdebfc62e601ee65ee161e4a6327452133b574d7e"},"version":"0.8.2"},
|
||||||
|
"base-prelude": {"dependencies":["base"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/base-prelude-1.4/base-prelude-1.4.tar.gz"},"name":"base-prelude","pinned":{"url":["https://hackage.haskell.org/package/base-prelude-1.4/base-prelude-1.4.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/base-prelude-1.4.tar.gz"],"sha256":"3a7fc639f3e5293509369d0b217f9d9b9662373b151411841df1d099bcd8c55a","cabal-sha256":"feea99326853023fa9f908308383a7f9802e40f2d241b83dac57b266b202bda6"},"version":"1.4"},
|
||||||
|
"base64-bytestring": {"dependencies":["base","bytestring"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/base64-bytestring-1.1.0.0/base64-bytestring-1.1.0.0.tar.gz"},"name":"base64-bytestring","pinned":{"url":["https://hackage.haskell.org/package/base64-bytestring-1.1.0.0/base64-bytestring-1.1.0.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/base64-bytestring-1.1.0.0.tar.gz"],"sha256":"210d6c9042241ca52ee5d89cf221dbeb4d0e64b37391345369035ad2d9b4aca9","cabal-sha256":"190264fef9e65d9085f00ccda419137096d1dc94777c58272bc96821dc7f37c3"},"version":"1.1.0.0"},
|
||||||
|
"basement": {"dependencies":["base","ghc-prim"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/basement-0.0.11/basement-0.0.11.tar.gz"},"name":"basement","pinned":{"url":["https://hackage.haskell.org/package/basement-0.0.11/basement-0.0.11.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/basement-0.0.11.tar.gz"],"sha256":"67582b3475a5547925399f719df21f8bbbd0ca4d4db27795c22a474f8ee6346b","cabal-sha256":"af43e2e334e515b52ca309919b135c51b5e9411e6d4c68d0e8950d61eb5f25d1"},"version":"0.0.11"},
|
||||||
|
"bazel-runfiles": {"dependencies":["base","directory","filepath","transformers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/bazel-runfiles-0.12/bazel-runfiles-0.12.tar.gz"},"name":"bazel-runfiles","pinned":{"url":["https://hackage.haskell.org/package/bazel-runfiles-0.12/bazel-runfiles-0.12.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/bazel-runfiles-0.12.tar.gz"],"sha256":"758abec4b6d9256dd17a3d9d3de1279e01f04a8662ef5fbd523d83e58b343cf5","cabal-sha256":"ea0e555a0c3fa67b0009a5f97d72cb1a0e9f03fe20ee2f6025b49a8117537298"},"version":"0.12"},
|
||||||
|
"bifunctors": {"dependencies":["base","base-orphans","comonad","containers","tagged","template-haskell","th-abstraction","transformers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/bifunctors-5.5.7/bifunctors-5.5.7.tar.gz"},"name":"bifunctors","pinned":{"url":["https://hackage.haskell.org/package/bifunctors-5.5.7/bifunctors-5.5.7.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/bifunctors-5.5.7.tar.gz"],"sha256":"88b3a2d4504e1139a3aef7027913faa0870631477d0a2ebb6fa67d494cdb3532","cabal-sha256":"179970d8cabaa760df74d40e1f81b3633c78b569f2d058e24dac31b5a1865406"},"version":"5.5.7"},
|
||||||
|
"binary": {"dependencies":[],"location":{"type":"core"},"name":"binary","version":"0.8.8.0"},
|
||||||
|
"blaze-builder": {"dependencies":["base","bytestring","deepseq","text"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/blaze-builder-0.4.1.0/blaze-builder-0.4.1.0.tar.gz"},"name":"blaze-builder","pinned":{"url":["https://hackage.haskell.org/package/blaze-builder-0.4.1.0/blaze-builder-0.4.1.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/blaze-builder-0.4.1.0.tar.gz"],"sha256":"91fc8b966f3e9dc9461e1675c7566b881740f99abc906495491a3501630bc814","cabal-sha256":"fa992674ea28f6ea6569d93388d757aef928af1e2f0ce80a35c29fb782252a2d"},"version":"0.4.1.0"},
|
||||||
|
"blaze-html": {"dependencies":["base","blaze-builder","blaze-markup","bytestring","text"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/blaze-html-0.9.1.2/blaze-html-0.9.1.2.tar.gz"},"name":"blaze-html","pinned":{"url":["https://hackage.haskell.org/package/blaze-html-0.9.1.2/blaze-html-0.9.1.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/blaze-html-0.9.1.2.tar.gz"],"sha256":"60503f42546c6c1b954014d188ea137e43d74dcffd2bf6157c113fd91a0c394c","cabal-sha256":"5cd99ebdbf18e096f548f49ccabad0ec1338a1e7dd5165ab304b25e2efb1cb54"},"version":"0.9.1.2"},
|
||||||
|
"blaze-markup": {"dependencies":["base","blaze-builder","bytestring","text"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/blaze-markup-0.8.2.7/blaze-markup-0.8.2.7.tar.gz"},"name":"blaze-markup","pinned":{"url":["https://hackage.haskell.org/package/blaze-markup-0.8.2.7/blaze-markup-0.8.2.7.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/blaze-markup-0.8.2.7.tar.gz"],"sha256":"8b6489ed422d98e4372f41be1f40f772b8d4ed925f3203b36be4078d918c8ee4","cabal-sha256":"66a4a250ef6597e3d147256ee3f3123d3b4848f2d2494f676ec293267e286f63"},"version":"0.8.2.7"},
|
||||||
|
"bytestring": {"dependencies":[],"location":{"type":"core"},"name":"bytestring","version":"0.10.10.0"},
|
||||||
|
"cabal-doctest": {"dependencies":["Cabal","base","directory","filepath"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/cabal-doctest-1.0.8/cabal-doctest-1.0.8.tar.gz"},"name":"cabal-doctest","pinned":{"url":["https://hackage.haskell.org/package/cabal-doctest-1.0.8/cabal-doctest-1.0.8.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/cabal-doctest-1.0.8.tar.gz"],"sha256":"2026a6a87d410202ce091412ca6bc33c5aca787025326b4a3d13425a23392e0e","cabal-sha256":"8bd1d614fb65f0d52609da30bf8e5ec71a4b6adf8ff5610edb3cb4d114576117"},"version":"1.0.8"},
|
||||||
|
"call-stack": {"dependencies":["base"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/call-stack-0.2.0/call-stack-0.2.0.tar.gz"},"name":"call-stack","pinned":{"url":["https://hackage.haskell.org/package/call-stack-0.2.0/call-stack-0.2.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/call-stack-0.2.0.tar.gz"],"sha256":"95c693c93958758d714dee22edc56d4ebb2dcefa4412264e941e32ccd6e4e0c7","cabal-sha256":"5ce796b78d5f964468ec6fe0717b4e7d0430817f37370c47b3e6b38e345b6643"},"version":"0.2.0"},
|
||||||
|
"case-insensitive": {"dependencies":["base","bytestring","deepseq","hashable","text"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/case-insensitive-1.2.1.0/case-insensitive-1.2.1.0.tar.gz"},"name":"case-insensitive","pinned":{"url":["https://hackage.haskell.org/package/case-insensitive-1.2.1.0/case-insensitive-1.2.1.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/case-insensitive-1.2.1.0.tar.gz"],"sha256":"296dc17e0c5f3dfb3d82ced83e4c9c44c338ecde749b278b6eae512f1d04e406","cabal-sha256":"9dfd3171fc7698cf8d931727d3af3a7b389135b583e46b5adac1f9d2026fff61"},"version":"1.2.1.0"},
|
||||||
|
"charset": {"dependencies":["array","base","bytestring","containers","semigroups","unordered-containers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/charset-0.3.7.1/charset-0.3.7.1.tar.gz"},"name":"charset","pinned":{"url":["https://hackage.haskell.org/package/charset-0.3.7.1/charset-0.3.7.1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/charset-0.3.7.1.tar.gz"],"sha256":"3d415d2883bd7bf0cc9f038e8323f19c71e07dd12a3c712f449ccb8b4daac0be","cabal-sha256":"feeb8e992c080205ad2f3b96f8fbe71419c92b9a3a95f00096faedf404efd6fc"},"version":"0.3.7.1"},
|
||||||
|
"clock": {"dependencies":["base"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/clock-0.8/clock-0.8.tar.gz"},"name":"clock","pinned":{"url":["https://hackage.haskell.org/package/clock-0.8/clock-0.8.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/clock-0.8.tar.gz"],"sha256":"08a35c5294009040f1e5eb721a21b60df7af6584092bb3d376ab1b2e57e26914","cabal-sha256":"b4ae207e2d3761450060a0d0feb873269233898039c76fceef9cc1a544067767"},"version":"0.8"},
|
||||||
|
"cmdargs": {"dependencies":["base","filepath","process","template-haskell","transformers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/cmdargs-0.10.20/cmdargs-0.10.20.tar.gz"},"name":"cmdargs","pinned":{"url":["https://hackage.haskell.org/package/cmdargs-0.10.20/cmdargs-0.10.20.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/cmdargs-0.10.20.tar.gz"],"sha256":"0e269dc48c3d4c0447c96ffd772a6fe69dfa1260c323f4cd7bf171cbf2ab7331","cabal-sha256":"76cf238367e669833929dd264b4fc2278145ddf5b743624f2d5558cca16a08a9"},"version":"0.10.20"},
|
||||||
|
"code-page": {"dependencies":["base"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/code-page-0.2/code-page-0.2.tar.gz"},"name":"code-page","pinned":{"url":["https://hackage.haskell.org/package/code-page-0.2/code-page-0.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/code-page-0.2.tar.gz"],"sha256":"bfe32a8c4be9cf0d5a088267bf3fdf4adda8ba3f109e85675c93e70d575e1844","cabal-sha256":"f701393cb1ff7b3ec7880816abc44387647811be31670e884e02d6a20c4aa508"},"version":"0.2"},
|
||||||
|
"colour": {"dependencies":["base"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/colour-2.3.5/colour-2.3.5.tar.gz"},"name":"colour","pinned":{"url":["https://hackage.haskell.org/package/colour-2.3.5/colour-2.3.5.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/colour-2.3.5.tar.gz"],"sha256":"3b8d471979617dce7c193523743c9782df63433d8e87e3ef6d97922e0da104e7","cabal-sha256":"b27db0a3ad40d70bdbd8510a104269f8707592e80757a1abc66a22ba25e5a42f"},"version":"2.3.5"},
|
||||||
|
"comonad": {"dependencies":["Cabal","base","cabal-doctest","containers","distributive","tagged","transformers","transformers-compat"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/comonad-5.0.6/comonad-5.0.6.tar.gz"},"name":"comonad","pinned":{"url":["https://hackage.haskell.org/package/comonad-5.0.6/comonad-5.0.6.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/comonad-5.0.6.tar.gz"],"sha256":"77cfb016acd1747b892c31b82daf0de93f508ba775d62562d376b354adb88fae","cabal-sha256":"fdf1b529a79765a8549ac7e9d439b769cca852778742db8702a9d9b2dc27e4a4"},"version":"5.0.6"},
|
||||||
|
"concurrent-output": {"dependencies":["ansi-terminal","async","base","directory","exceptions","process","stm","terminal-size","text","transformers","unix"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/concurrent-output-1.10.12/concurrent-output-1.10.12.tar.gz"},"name":"concurrent-output","pinned":{"url":["https://hackage.haskell.org/package/concurrent-output-1.10.12/concurrent-output-1.10.12.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/concurrent-output-1.10.12.tar.gz"],"sha256":"87f8a1cf54e6eaf146750fa6bf11aa2620da496073cb6c3dc8f697169eba3c20","cabal-sha256":"50e14131c486611055e2fa4f01a2ed03e63051e6d6707650f0a8f2f4ca618477"},"version":"1.10.12"},
|
||||||
|
"conduit": {"dependencies":["base","bytestring","directory","exceptions","filepath","mono-traversable","mtl","primitive","resourcet","text","transformers","unix","unliftio-core","vector"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/conduit-1.3.2/conduit-1.3.2.tar.gz"},"name":"conduit","pinned":{"url":["https://hackage.haskell.org/package/conduit-1.3.2/conduit-1.3.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/conduit-1.3.2.tar.gz"],"sha256":"e3d97970f9bdead7e9e5a71b6f6c32d5d08c1551d5b36b28350b20e146f4ac6e","cabal-sha256":"f85b5dc1d7d30e9122ac15975e7f59fe846b42ef952e2beddd32520a753c2fc4"},"version":"1.3.2"},
|
||||||
|
"constraints": {"dependencies":["base","binary","deepseq","ghc-prim","hashable","mtl","semigroups","transformers","transformers-compat","type-equality"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/constraints-0.12/constraints-0.12.tar.gz"},"name":"constraints","pinned":{"url":["https://hackage.haskell.org/package/constraints-0.12/constraints-0.12.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/constraints-0.12.tar.gz"],"sha256":"f26b531a15f013f15b4b5df46c4f89b13927253a4195494c50320adf05760223","cabal-sha256":"71c7999d7fa01d8941f08d37d4c107c6b1bcbd0306e234157557b9b096b7f1be"},"version":"0.12"},
|
||||||
|
"containers": {"dependencies":[],"location":{"type":"core"},"name":"containers","version":"0.6.2.1"},
|
||||||
|
"contravariant": {"dependencies":["StateVar","base","transformers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/contravariant-1.5.2/contravariant-1.5.2.tar.gz"},"name":"contravariant","pinned":{"url":["https://hackage.haskell.org/package/contravariant-1.5.2/contravariant-1.5.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/contravariant-1.5.2.tar.gz"],"sha256":"c4262c24e3dcc2ba8ca221ed52a6390818a715301e4f13135d8d732e0c7dc60c","cabal-sha256":"853259271870000c007a281f0bf0bf6e1aaa97c5fd5cd5734d7b0d79b9de2af5"},"version":"1.5.2"},
|
||||||
|
"data-default-class": {"dependencies":["base"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/data-default-class-0.1.2.0/data-default-class-0.1.2.0.tar.gz"},"name":"data-default-class","pinned":{"url":["https://hackage.haskell.org/package/data-default-class-0.1.2.0/data-default-class-0.1.2.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/data-default-class-0.1.2.0.tar.gz"],"sha256":"4f01b423f000c3e069aaf52a348564a6536797f31498bb85c3db4bd2d0973e56","cabal-sha256":"63e62120b7efd733a5a17cf59ceb43268e9a929c748127172d7d42f4a336e327"},"version":"0.1.2.0"},
|
||||||
|
"data-fix": {"dependencies":["base","deepseq","hashable"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/data-fix-0.3.0/data-fix-0.3.0.tar.gz"},"name":"data-fix","pinned":{"url":["https://hackage.haskell.org/package/data-fix-0.3.0/data-fix-0.3.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/data-fix-0.3.0.tar.gz"],"sha256":"9e59b3ed694b5139316093b3767842e60ad4821858459e7cd763e5773dfa99a0","cabal-sha256":"058a266d1e658500e0ffb8babe68195b0ce06a081dcfc3814afc784b083fd9a5"},"version":"0.3.0"},
|
||||||
|
"deepseq": {"dependencies":[],"location":{"type":"core"},"name":"deepseq","version":"1.4.4.0"},
|
||||||
|
"directory": {"dependencies":[],"location":{"type":"core"},"name":"directory","version":"1.3.6.0"},
|
||||||
|
"directory-tree": {"dependencies":["base","directory","filepath"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/directory-tree-0.12.1/directory-tree-0.12.1.tar.gz"},"name":"directory-tree","pinned":{"url":["https://hackage.haskell.org/package/directory-tree-0.12.1/directory-tree-0.12.1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/directory-tree-0.12.1.tar.gz"],"sha256":"e2084495b3a226cf54d949635c86fc14e89daa09d86cce39e3c3cf898ae6e517","cabal-sha256":"6f24ee1eca965a199a96f853582e61a338f1a529c87bc02c7f1451e2f2ed03fe"},"version":"0.12.1"},
|
||||||
|
"distributive": {"dependencies":["Cabal","base","base-orphans","cabal-doctest","tagged","transformers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/distributive-0.6.2/distributive-0.6.2.tar.gz"},"name":"distributive","pinned":{"url":["https://hackage.haskell.org/package/distributive-0.6.2/distributive-0.6.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/distributive-0.6.2.tar.gz"],"sha256":"824ee271ded433ce6c61fe890c784642b7e20ffa4082fca609da54e7dcfc23c9","cabal-sha256":"2ace9babcdbd1c2db28638c200405fb85e3660fe19ceae4f03082590adc2c487"},"version":"0.6.2"},
|
||||||
|
"dlist": {"dependencies":["base","deepseq"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/dlist-0.8.0.8/dlist-0.8.0.8.tar.gz"},"name":"dlist","pinned":{"url":["https://hackage.haskell.org/package/dlist-0.8.0.8/dlist-0.8.0.8.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/dlist-0.8.0.8.tar.gz"],"sha256":"7129cf18068d3384e305708a10426ab8f573bee1030b023a114f45f1d0ec496d","cabal-sha256":"90ca348bffdc62d7070bcf0e97c728f8d01b24fbc7ea08d2909157d0da76534c"},"version":"0.8.0.8"},
|
||||||
|
"doctest": {"dependencies":["base","base-compat","code-page","deepseq","directory","filepath","ghc","ghc-paths","process","syb","transformers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/doctest-0.16.3/doctest-0.16.3.tar.gz"},"name":"doctest","pinned":{"url":["https://hackage.haskell.org/package/doctest-0.16.3/doctest-0.16.3.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/doctest-0.16.3.tar.gz"],"sha256":"cfe9629f9c4d0aa24a11b5c4dd216fb5b9ebce7b3f6a8a7e58716280943a34f8","cabal-sha256":"a4d5e71440a95034ad206eb9f3a27b2f5253896a15124574a00fea98c5b2f5c1"},"version":"0.16.3"},
|
||||||
|
"erf": {"dependencies":["base"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/erf-2.0.0.0/erf-2.0.0.0.tar.gz"},"name":"erf","pinned":{"url":["https://hackage.haskell.org/package/erf-2.0.0.0/erf-2.0.0.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/erf-2.0.0.0.tar.gz"],"sha256":"24f0b79c7e1d25cb2cd44c2258d7a464bf6db8079775b50b60b54a254616b337","cabal-sha256":"11c5d3747d17b589009cbe9656ca792e4b5b2560d4aa44f6f1e80044794b1a8b"},"version":"2.0.0.0"},
|
||||||
|
"exceptions": {"dependencies":["base","mtl","stm","template-haskell","transformers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/exceptions-0.10.4/exceptions-0.10.4.tar.gz"},"name":"exceptions","pinned":{"url":["https://hackage.haskell.org/package/exceptions-0.10.4/exceptions-0.10.4.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/exceptions-0.10.4.tar.gz"],"sha256":"4d0bfb4355cffcd67d300811df9d5fe44ea3594ed63750795bfc1f797abd84cf","cabal-sha256":"1729ef26a611ae78aa58cdd34192aff710cbaa6d631dd042ddfb63556d00b52c"},"version":"0.10.4"},
|
||||||
|
"fail": {"dependencies":[],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/fail-4.9.0.0/fail-4.9.0.0.tar.gz"},"name":"fail","pinned":{"url":["https://hackage.haskell.org/package/fail-4.9.0.0/fail-4.9.0.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/fail-4.9.0.0.tar.gz"],"sha256":"6d5cdb1a5c539425a9665f740e364722e1d9d6ae37fbc55f30fe3dbbbb91d4a2","cabal-sha256":"35d1ee29364447c1b7d616bb1ee31f162b73e85fea91d7ca6441cf901398f572"},"version":"4.9.0.0"},
|
||||||
|
"filepath": {"dependencies":[],"location":{"type":"core"},"name":"filepath","version":"1.4.2.1"},
|
||||||
|
"fingertree": {"dependencies":["base"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/fingertree-0.1.4.2/fingertree-0.1.4.2.tar.gz"},"name":"fingertree","pinned":{"url":["https://hackage.haskell.org/package/fingertree-0.1.4.2/fingertree-0.1.4.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/fingertree-0.1.4.2.tar.gz"],"sha256":"95a948341570bad5a9b2468c388c0eb2c20c57e10dd8fbfc994c7b8764b36a7f","cabal-sha256":"b368fda61b14073bd798f45c8fa91e1c5331628193a8b88d93fb5a4341849c64"},"version":"0.1.4.2"},
|
||||||
|
"foldl": {"dependencies":["base","bytestring","comonad","containers","contravariant","hashable","mwc-random","primitive","profunctors","semigroupoids","text","transformers","unordered-containers","vector","vector-builder"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/foldl-1.4.8/foldl-1.4.8.tar.gz"},"name":"foldl","pinned":{"url":["https://hackage.haskell.org/package/foldl-1.4.8/foldl-1.4.8.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/foldl-1.4.8.tar.gz"],"sha256":"ed1a59f210d4e732dc5b0a0dbe7e60348ea87e74df196f75a6bc236c936499ca","cabal-sha256":"2f6611b3a2ce92d2279c93a60cd8ef3bed98c17bd814e5b943ede53578005f26"},"version":"1.4.8"},
|
||||||
|
"free": {"dependencies":["base","comonad","containers","distributive","exceptions","mtl","profunctors","semigroupoids","template-haskell","transformers","transformers-base"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/free-5.1.3/free-5.1.3.tar.gz"},"name":"free","pinned":{"url":["https://hackage.haskell.org/package/free-5.1.3/free-5.1.3.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/free-5.1.3.tar.gz"],"sha256":"2c70d66e3a1ad52ce4b22d5510ffc6d7b3db950bd7f43bc61801cfe7b24c2e2d","cabal-sha256":"604c27b6ba0a560c8a1377ad76e5bbb8528e924d6b0590215d815faddbec0b70"},"version":"5.1.3"},
|
||||||
|
"fused-effects": {"dependencies":["base","transformers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/fused-effects-1.1.0.0/fused-effects-1.1.0.0.tar.gz"},"name":"fused-effects","pinned":{"url":["https://hackage.haskell.org/package/fused-effects-1.1.0.0/fused-effects-1.1.0.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/fused-effects-1.1.0.0.tar.gz"],"sha256":"9de604f9bbae418ff81767c173933945d1dd61c2889c124775dcbfa90780415b","cabal-sha256":"29d03c73b585920c0999a18b73c9a0bf9e61e1fa58c5c2bed3f89423c8078f4a"},"version":"1.1.0.0"},
|
||||||
|
"fused-effects-exceptions": {"dependencies":["base","fused-effects","transformers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/fused-effects-exceptions-1.1.0.0/fused-effects-exceptions-1.1.0.0.tar.gz"},"name":"fused-effects-exceptions","pinned":{"url":["https://hackage.haskell.org/package/fused-effects-exceptions-1.1.0.0/fused-effects-exceptions-1.1.0.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/fused-effects-exceptions-1.1.0.0.tar.gz"],"sha256":"51d67c952b4d0799fe99f6b82d6e534b9fd26447ea321c7710bfdbc9ca76bd64","cabal-sha256":"c1880f55360deaa4441bda9ff09a4ce6dbd63df8c175c7ada16a5d67a3717bee"},"version":"1.1.0.0"},
|
||||||
|
"fused-effects-readline": {"dependencies":["base","directory","exceptions","filepath","fused-effects","haskeline","prettyprinter","prettyprinter-ansi-terminal","terminal-size","transformers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/fused-effects-readline-0.1.0.0/fused-effects-readline-0.1.0.0.tar.gz"},"name":"fused-effects-readline","pinned":{"url":["https://hackage.haskell.org/package/fused-effects-readline-0.1.0.0/fused-effects-readline-0.1.0.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/fused-effects-readline-0.1.0.0.tar.gz"],"sha256":"5514b7022231fc2e040bbdc7550cb080a03ebdf567e16719f0443f20572b3ae9","cabal-sha256":"668b390d418baf0e4f611a021e92a12b9bdebbab2e6a75a8b6c7434cfd019856"},"version":"0.1.0.0"},
|
||||||
|
"fused-syntax": {"dependencies":["base","transformers"],"location":{"type":"archive","url":"https://github.com/antitypical/fused-syntax/archive/4a383d57c8fd7592f54a33f43eb9666314a6e80e.tar.gz"},"name":"fused-syntax","pinned":{"sha256":"aa345f8f04a12beaf8f07620467dee06370b72c763cf2d1c60556878b226fafc","strip-prefix":"fused-syntax-4a383d57c8fd7592f54a33f43eb9666314a6e80e"},"version":"0.0.0.0"},
|
||||||
|
"gauge": {"dependencies":["base","basement","deepseq","directory","process","vector"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/gauge-0.2.5/gauge-0.2.5.tar.gz"},"name":"gauge","pinned":{"url":["https://hackage.haskell.org/package/gauge-0.2.5/gauge-0.2.5.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/gauge-0.2.5.tar.gz"],"sha256":"d520fd677890c1bf2b1601331d003f976d85420811c3db4a72cff4d3bdb7f5a7","cabal-sha256":"8d60450bdec985c146d5632d4f5a8d60cec27d71ba6787ed1ee64d945d4c7c33"},"version":"0.2.5"},
|
||||||
|
"generic-lens": {"dependencies":["base","generic-lens-core","profunctors","text"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/generic-lens-2.0.0.0/generic-lens-2.0.0.0.tar.gz"},"name":"generic-lens","pinned":{"url":["https://hackage.haskell.org/package/generic-lens-2.0.0.0/generic-lens-2.0.0.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/generic-lens-2.0.0.0.tar.gz"],"sha256":"b816e55dbdf96ed04b7ad01193fce3dec36397aff3036e34a89ee2884b02093a","cabal-sha256":"7409fa0ce540d0bd41acf596edd1c5d0c0ab1cd1294d514cf19c5c24e8ef2550"},"version":"2.0.0.0"},
|
||||||
|
"generic-lens-core": {"dependencies":["base","indexed-profunctors","text"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/generic-lens-core-2.0.0.0/generic-lens-core-2.0.0.0.tar.gz"},"name":"generic-lens-core","pinned":{"url":["https://hackage.haskell.org/package/generic-lens-core-2.0.0.0/generic-lens-core-2.0.0.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/generic-lens-core-2.0.0.0.tar.gz"],"sha256":"51628204350380be7d46a53a9e3e47d9d6f5c4797cf0215b9d93a2f90794ee40","cabal-sha256":"40b063c4a1399b3cdb19f2df1fae5a1a82f3313015c7c3e47fc23b8ef1b3e443"},"version":"2.0.0.0"},
|
||||||
|
"generic-monoid": {"dependencies":["base"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/generic-monoid-0.1.0.1/generic-monoid-0.1.0.1.tar.gz"},"name":"generic-monoid","pinned":{"url":["https://hackage.haskell.org/package/generic-monoid-0.1.0.1/generic-monoid-0.1.0.1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/generic-monoid-0.1.0.1.tar.gz"],"sha256":"cfd072ad70af41c1b94ac24e42e2635f37ed2a54e8f4be871be78b18b66b2adf","cabal-sha256":"d2ddcb359d05156e5654a309759dbf1de887e591d9afdabfb343b2e66403890c"},"version":"0.1.0.1"},
|
||||||
|
"ghc": {"dependencies":[],"location":{"type":"core"},"name":"ghc","version":"8.10.1"},
|
||||||
|
"ghc-paths": {"dependencies":["Cabal","base","directory"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/ghc-paths-0.1.0.12/ghc-paths-0.1.0.12.tar.gz"},"name":"ghc-paths","pinned":{"url":["https://hackage.haskell.org/package/ghc-paths-0.1.0.12/ghc-paths-0.1.0.12.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/ghc-paths-0.1.0.12.tar.gz"],"sha256":"6ecbe676d073cb07989c61ce4c5709c4e67cbefdd2d55a4095f9388b6fe2c484","cabal-sha256":"85370fdc615d4be5e09d9269eebb9a3fc7017c40b1a9e0050b121d75908564bd"},"version":"0.1.0.12"},
|
||||||
|
"ghc-prim": {"dependencies":[],"location":{"type":"core"},"name":"ghc-prim","version":"0.6.1"},
|
||||||
|
"happy": {"dependencies":["array","base","containers","mtl"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/happy-1.19.12/happy-1.19.12.tar.gz"},"name":"happy","pinned":{"url":["https://hackage.haskell.org/package/happy-1.19.12/happy-1.19.12.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/happy-1.19.12.tar.gz"],"sha256":"fb9a23e41401711a3b288f93cf0a66db9f97da1ce32ec4fffea4b78a0daeb40f","cabal-sha256":"acc67bfbf3af87892766781dd064c9447181ea81269a7a1e5fc9ace4a8fa4768"},"version":"1.19.12"},
|
||||||
|
"hashable": {"dependencies":["base","bytestring","deepseq","ghc-prim","integer-gmp","text"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/hashable-1.3.0.0/hashable-1.3.0.0.tar.gz"},"name":"hashable","pinned":{"url":["https://hackage.haskell.org/package/hashable-1.3.0.0/hashable-1.3.0.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/hashable-1.3.0.0.tar.gz"],"sha256":"822e5413fbccca6ae884d3aba4066422c8b5d58d23d18b9ecb5c03273bb19ab4","cabal-sha256":"4c70f1407881059e93550d3742191254296b2737b793a742bd901348fb3e1fb1"},"version":"1.3.0.0"},
|
||||||
|
"haskeline": {"dependencies":["base","bytestring","containers","directory","exceptions","filepath","process","stm","terminfo","transformers","unix"],"location":{"type":"core"},"name":"haskeline","version":"0.8.0.0"},
|
||||||
|
"haskell-lexer": {"dependencies":["base"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/haskell-lexer-1.1/haskell-lexer-1.1.tar.gz"},"name":"haskell-lexer","pinned":{"url":["https://hackage.haskell.org/package/haskell-lexer-1.1/haskell-lexer-1.1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/haskell-lexer-1.1.tar.gz"],"sha256":"313a15cc643322c8badd148867ce25ca1ffc191df9e7eeec5b10bc08c4b563d5","cabal-sha256":"9e0a7633f6bdb59004c6f3144ebfad1edb9e440fc6a94215c3a1d11bcd8656ef"},"version":"1.1"},
|
||||||
|
"hedgehog": {"dependencies":["ansi-terminal","async","base","bytestring","concurrent-output","containers","deepseq","directory","erf","exceptions","fail","lifted-async","mmorph","monad-control","mtl","pretty-show","primitive","random","resourcet","semigroups","stm","template-haskell","text","time","transformers","transformers-base","wl-pprint-annotated"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/hedgehog-1.0.3/hedgehog-1.0.3.tar.gz"},"name":"hedgehog","pinned":{"url":["https://hackage.haskell.org/package/hedgehog-1.0.3/hedgehog-1.0.3.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/hedgehog-1.0.3.tar.gz"],"sha256":"35f9e96578c09734243a4e423d367083e08937f863101b3f6ef48744c8299b82","cabal-sha256":"dd9a25bf904fe444d5de471d0933261ef2c9a1110330460e037e0fef86fac89e"},"version":"1.0.3"},
|
||||||
|
"hostname": {"dependencies":["base"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/hostname-1.0/hostname-1.0.tar.gz"},"name":"hostname","pinned":{"url":["https://hackage.haskell.org/package/hostname-1.0/hostname-1.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/hostname-1.0.tar.gz"],"sha256":"9b43dab1b6da521f35685b20555da00738c8e136eb972458c786242406a9cf5c","cabal-sha256":"8203b6ecd14ca1ef12f73a471b0a6a4be3ad4568d8b84f2bc4bc9e0abb8c4153"},"version":"1.0"},
|
||||||
|
"hscolour": {"dependencies":["base","containers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/hscolour-1.24.4/hscolour-1.24.4.tar.gz"},"name":"hscolour","pinned":{"url":["https://hackage.haskell.org/package/hscolour-1.24.4/hscolour-1.24.4.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/hscolour-1.24.4.tar.gz"],"sha256":"243332b082294117f37b2c2c68079fa61af68b36223b3fc07594f245e0e5321d","cabal-sha256":"3a329fa0ea9138f651088f1fa25522aabeab0eb591932d3fd56c66736bbe78be"},"version":"1.24.4"},
|
||||||
|
"hspec": {"dependencies":["QuickCheck","base","hspec-core","hspec-discover","hspec-expectations"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/hspec-2.7.2/hspec-2.7.2.tar.gz"},"name":"hspec","pinned":{"url":["https://hackage.haskell.org/package/hspec-2.7.2/hspec-2.7.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/hspec-2.7.2.tar.gz"],"sha256":"a97ebd050d5667d78dbe83348b8b1b4f579c2ea71ccfcc3eea9e9fbe0b5a697d","cabal-sha256":"4758e1af9cf534429cde9f5f6495e5922ad1c05ca5b8344a0a459d320cd1cd28"},"version":"2.7.2"},
|
||||||
|
"hspec-core": {"dependencies":["HUnit","QuickCheck","ansi-terminal","array","base","call-stack","clock","deepseq","directory","filepath","hspec-expectations","quickcheck-io","random","setenv","stm","tf-random","transformers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/hspec-core-2.7.2/hspec-core-2.7.2.tar.gz"},"name":"hspec-core","pinned":{"url":["https://hackage.haskell.org/package/hspec-core-2.7.2/hspec-core-2.7.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/hspec-core-2.7.2.tar.gz"],"sha256":"d33afadc5602545c832bf5a7d73815ee9cc6c50e4b17847b35d7e5f11eeffa6f","cabal-sha256":"4302aeeaafd24309b8c32dace6b6c1a32124a721c0be10ab0f23ec40db38333e"},"version":"2.7.2"},
|
||||||
|
"hspec-discover": {"dependencies":["base","directory","filepath"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/hspec-discover-2.7.2/hspec-discover-2.7.2.tar.gz"},"name":"hspec-discover","pinned":{"url":["https://hackage.haskell.org/package/hspec-discover-2.7.2/hspec-discover-2.7.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/hspec-discover-2.7.2.tar.gz"],"sha256":"888604783e48c6a5f49f3de5eb8c4f83841119b13d99144283f9e56a7fdb7458","cabal-sha256":"9b21f4211c0553f2f50e50b2231dbdc89e37acb0fbb60b91b890cc2ec81e7bf7"},"version":"2.7.2"},
|
||||||
|
"hspec-expectations": {"dependencies":["HUnit","base","call-stack"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/hspec-expectations-0.8.2/hspec-expectations-0.8.2.tar.gz"},"name":"hspec-expectations","pinned":{"url":["https://hackage.haskell.org/package/hspec-expectations-0.8.2/hspec-expectations-0.8.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/hspec-expectations-0.8.2.tar.gz"],"sha256":"819607ea1faf35ce5be34be61c6f50f3389ea43892d56fb28c57a9f5d54fb4ef","cabal-sha256":"e2db24881baadc2d9d23b03cb629e80dcbda89a6b04ace9adb5f4d02ef8b31aa"},"version":"0.8.2"},
|
||||||
|
"indexed-profunctors": {"dependencies":["base"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/indexed-profunctors-0.1/indexed-profunctors-0.1.tar.gz"},"name":"indexed-profunctors","pinned":{"url":["https://hackage.haskell.org/package/indexed-profunctors-0.1/indexed-profunctors-0.1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/indexed-profunctors-0.1.tar.gz"],"sha256":"31dfb4319dff84199344000b1efad75158eeac17ddcbb27f91735e958591bb65","cabal-sha256":"ddf618d0d4c58319c1e735e746bc69a1021f13b6f475dc9614b80af03432e6d4"},"version":"0.1"},
|
||||||
|
"integer-gmp": {"dependencies":[],"location":{"type":"core"},"name":"integer-gmp","version":"1.0.3.0"},
|
||||||
|
"integer-logarithms": {"dependencies":["array","base","ghc-prim","integer-gmp"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/integer-logarithms-1.0.3/integer-logarithms-1.0.3.tar.gz"},"name":"integer-logarithms","pinned":{"url":["https://hackage.haskell.org/package/integer-logarithms-1.0.3/integer-logarithms-1.0.3.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/integer-logarithms-1.0.3.tar.gz"],"sha256":"5ae262018698af35bb74916fad170d96d3eb44669c72ed36db9a19a3392cec16","cabal-sha256":"63d42595ec92b71ac98a07b984b0a2eb3d4956f4ad2d856c3bf6fc3dc218d228"},"version":"1.0.3"},
|
||||||
|
"invariant": {"dependencies":["StateVar","array","base","bifunctors","comonad","containers","contravariant","ghc-prim","profunctors","stm","tagged","template-haskell","th-abstraction","transformers","transformers-compat","unordered-containers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/invariant-0.5.3/invariant-0.5.3.tar.gz"},"name":"invariant","pinned":{"url":["https://hackage.haskell.org/package/invariant-0.5.3/invariant-0.5.3.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/invariant-0.5.3.tar.gz"],"sha256":"d73e5def38da9fdd85def073857aa5f4b1d3b0c2df05c43d58a677cca02d440c","cabal-sha256":"e430340b5f4248159f9fd217c506946887b4ff8f2c7a3819c3d4f06bcb195e6a"},"version":"0.5.3"},
|
||||||
|
"kan-extensions": {"dependencies":["adjunctions","array","base","comonad","containers","contravariant","distributive","free","invariant","mtl","profunctors","semigroupoids","tagged","transformers","transformers-compat"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/kan-extensions-5.2/kan-extensions-5.2.tar.gz"},"name":"kan-extensions","pinned":{"url":["https://hackage.haskell.org/package/kan-extensions-5.2/kan-extensions-5.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/kan-extensions-5.2.tar.gz"],"sha256":"6b727e586f744b96529415eeabc745dfe05feea61f6b6bad90c224c879f4dbd3","cabal-sha256":"2407501562039dad6a3d19aacd0bbcca07aa28497cbd1cdaaf5aabc30146899d"},"version":"5.2"},
|
||||||
|
"lens": {"dependencies":["Cabal","array","base","base-orphans","bifunctors","bytestring","cabal-doctest","call-stack","comonad","containers","contravariant","distributive","exceptions","filepath","free","ghc-prim","hashable","kan-extensions","mtl","parallel","profunctors","reflection","semigroupoids","tagged","template-haskell","text","th-abstraction","transformers","transformers-compat","unordered-containers","vector"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/lens-4.19.2/lens-4.19.2.tar.gz"},"name":"lens","pinned":{"url":["https://hackage.haskell.org/package/lens-4.19.2/lens-4.19.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/lens-4.19.2.tar.gz"],"sha256":"52f858ae3971a5104cdba5e81a27d154fda11fe65a54a4ac328c85904bdec23b","cabal-sha256":"f0570ca0e4624d9daa57256f00f514e87be155401583fa1665faba47376c63a7"},"version":"4.19.2"},
|
||||||
|
"lens-family": {"dependencies":["base","containers","lens-family-core","mtl","transformers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/lens-family-2.0.0/lens-family-2.0.0.tar.gz"},"name":"lens-family","pinned":{"url":["https://hackage.haskell.org/package/lens-family-2.0.0/lens-family-2.0.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/lens-family-2.0.0.tar.gz"],"sha256":"6793f2a5c5030f02258532043d57eac42318cd7f9cef47f6720a7b99276f03db","cabal-sha256":"b915001e862bda2ad5e0e5c17ba59f4483d02a02cbac020fd35f58e6736bc9a7"},"version":"2.0.0"},
|
||||||
|
"lens-family-core": {"dependencies":["base","containers","transformers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/lens-family-core-2.0.0/lens-family-core-2.0.0.tar.gz"},"name":"lens-family-core","pinned":{"url":["https://hackage.haskell.org/package/lens-family-core-2.0.0/lens-family-core-2.0.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/lens-family-core-2.0.0.tar.gz"],"sha256":"19b4fcd3bd37dd0056c112a9b16cf405644fabd6652013c61a5078380ed2265a","cabal-sha256":"645b0553e16a3857b08fa44f11f0664296e1db5d6494a83634711c7f4f1707a7"},"version":"2.0.0"},
|
||||||
|
"libyaml": {"dependencies":["base","bytestring","conduit","resourcet"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/libyaml-0.1.2/libyaml-0.1.2.tar.gz"},"name":"libyaml","pinned":{"url":["https://hackage.haskell.org/package/libyaml-0.1.2/libyaml-0.1.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/libyaml-0.1.2.tar.gz"],"sha256":"8f42d66f199fcaee255326f8f770d88b0670df56b5eb78002d6058f3a45e97b5","cabal-sha256":"7f14f69ceb14659699974e8e47e1ea6f226ea21ff42a802db03e721c319d201d"},"version":"0.1.2"},
|
||||||
|
"lifted-async": {"dependencies":["async","base","constraints","lifted-base","monad-control","transformers-base"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/lifted-async-0.10.1.2/lifted-async-0.10.1.2.tar.gz"},"name":"lifted-async","pinned":{"url":["https://hackage.haskell.org/package/lifted-async-0.10.1.2/lifted-async-0.10.1.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/lifted-async-0.10.1.2.tar.gz"],"sha256":"bd24cb197953701507680893b84df505eb58d1c31e1d45f9a0edae43cd965713","cabal-sha256":"525946f7f54feca4cf5207aaf56452be08a2b0d12e04e5fb5770a98b5a56b9fc"},"version":"0.10.1.2"},
|
||||||
|
"lifted-base": {"dependencies":["base","monad-control","transformers-base"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/lifted-base-0.2.3.12/lifted-base-0.2.3.12.tar.gz"},"name":"lifted-base","pinned":{"url":["https://hackage.haskell.org/package/lifted-base-0.2.3.12/lifted-base-0.2.3.12.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/lifted-base-0.2.3.12.tar.gz"],"sha256":"c134a95f56750aae806e38957bb03c59627cda16034af9e00a02b699474317c5","cabal-sha256":"e94ad0692c9c5d85c373e508f23654f2da8ac8c3e475c2b65ffbc04fb165ad69"},"version":"0.2.3.12"},
|
||||||
|
"lingo": {"dependencies":["base","bytestring","containers","directory","filepath","raw-strings-qq","text","yaml"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/lingo-0.5.0.1/lingo-0.5.0.1.tar.gz"},"name":"lingo","pinned":{"url":["https://hackage.haskell.org/package/lingo-0.5.0.1/lingo-0.5.0.1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/lingo-0.5.0.1.tar.gz"],"sha256":"1a354e753c18ee5c6fceed0acfd0b5b80c5bcb4536df32ba5608272bb279a740","cabal-sha256":"e57deaf3353725bbb84d5e7426d9b7039f191e46779c590f236851c75e94751a"},"version":"0.5.0.1"},
|
||||||
|
"logict": {"dependencies":["base","mtl"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/logict-0.7.0.2/logict-0.7.0.2.tar.gz"},"name":"logict","pinned":{"url":["https://hackage.haskell.org/package/logict-0.7.0.2/logict-0.7.0.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/logict-0.7.0.2.tar.gz"],"sha256":"ccc198a05563a4d8fc145ecde8b43a83599b3bcb032d2614a8e852f0ba6ecff5","cabal-sha256":"7edbddead124fb266f62f208ed56c4dbfdd8f20ce15be73b4fe1d2fc758f6e9d"},"version":"0.7.0.2"},
|
||||||
|
"math-functions": {"dependencies":["base","data-default-class","deepseq","primitive","vector"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/math-functions-0.3.4.1/math-functions-0.3.4.1.tar.gz"},"name":"math-functions","pinned":{"url":["https://hackage.haskell.org/package/math-functions-0.3.4.1/math-functions-0.3.4.1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/math-functions-0.3.4.1.tar.gz"],"sha256":"e20a0afc03d3431610d5f4e57ec3a71822bf6cb1c598e8f2ad1b336533e4a48f","cabal-sha256":"a6e458d2a78f03e83440062e8803c0baf7c1474dc2687489661690f4c6d46416"},"version":"0.3.4.1"},
|
||||||
|
"megaparsec": {"dependencies":["base","bytestring","case-insensitive","containers","deepseq","mtl","parser-combinators","scientific","text","transformers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/megaparsec-8.0.0/megaparsec-8.0.0.tar.gz"},"name":"megaparsec","pinned":{"url":["https://hackage.haskell.org/package/megaparsec-8.0.0/megaparsec-8.0.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/megaparsec-8.0.0.tar.gz"],"sha256":"b5d7c64646016d12f540a6948396a86e0cd39865569d68fe2018fe9e3fce6318","cabal-sha256":"362f85e243ecbcb550e1de6e5c74ba5a50c09edaa1208c99bc5b9fd242227fc6"},"version":"8.0.0"},
|
||||||
|
"mmorph": {"dependencies":["base","mtl","transformers","transformers-compat"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/mmorph-1.1.3/mmorph-1.1.3.tar.gz"},"name":"mmorph","pinned":{"url":["https://hackage.haskell.org/package/mmorph-1.1.3/mmorph-1.1.3.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/mmorph-1.1.3.tar.gz"],"sha256":"7923f7ad6260a05aaa8175b9f2a250f5bb63187427681171bd36d29a6cf2da65","cabal-sha256":"abfc95648fef0008f984b94137ce8e1635fb071c7bfaaa7393ba175a1b3bb12f"},"version":"1.1.3"},
|
||||||
|
"monad-control": {"dependencies":["base","stm","transformers","transformers-base","transformers-compat"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/monad-control-1.0.2.3/monad-control-1.0.2.3.tar.gz"},"name":"monad-control","pinned":{"url":["https://hackage.haskell.org/package/monad-control-1.0.2.3/monad-control-1.0.2.3.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/monad-control-1.0.2.3.tar.gz"],"sha256":"6c1034189d237ae45368c70f0e68f714dd3beda715dd265b6c8a99fcc64022b1","cabal-sha256":"a3ae888d2fed2e2a0ca33ae11e2480219e07312bccf1a02ffe2ba2e3ec5913ee"},"version":"1.0.2.3"},
|
||||||
|
"mono-traversable": {"dependencies":["base","bytestring","containers","hashable","split","text","transformers","unordered-containers","vector","vector-algorithms"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/mono-traversable-1.0.15.1/mono-traversable-1.0.15.1.tar.gz"},"name":"mono-traversable","pinned":{"url":["https://hackage.haskell.org/package/mono-traversable-1.0.15.1/mono-traversable-1.0.15.1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/mono-traversable-1.0.15.1.tar.gz"],"sha256":"c2df5b79ed2f88f2ee313e57c1d591d4463788e20d39e439297eec5ba5835ddf","cabal-sha256":"cad0e8681cd6c96d3303867fc68c80e2f5d55c2c4bf5277c06ca74402fda61c8"},"version":"1.0.15.1"},
|
||||||
|
"mtl": {"dependencies":[],"location":{"type":"core"},"name":"mtl","version":"2.2.2"},
|
||||||
|
"mwc-random": {"dependencies":["base","math-functions","primitive","time","vector"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/mwc-random-0.14.0.0/mwc-random-0.14.0.0.tar.gz"},"name":"mwc-random","pinned":{"url":["https://hackage.haskell.org/package/mwc-random-0.14.0.0/mwc-random-0.14.0.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/mwc-random-0.14.0.0.tar.gz"],"sha256":"00370edaa60a51c86663868ecc2b1995824970001875cec458e9acc13511efa2","cabal-sha256":"6ae33e246e91f66f621caabb2323b431c8dab57427a417a98f5cac3d82eb7b21"},"version":"0.14.0.0"},
|
||||||
|
"neat-interpolation": {"dependencies":["base","megaparsec","template-haskell","text"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/neat-interpolation-0.5.1.1/neat-interpolation-0.5.1.1.tar.gz"},"name":"neat-interpolation","pinned":{"url":["https://hackage.haskell.org/package/neat-interpolation-0.5.1.1/neat-interpolation-0.5.1.1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/neat-interpolation-0.5.1.1.tar.gz"],"sha256":"a4af35abf3f31168f7478eb334592b90e9a658efd26a5702e6780ab2c61454ae","cabal-sha256":"55f45d1737bcdf57dc9753996dd61819df335a542d8bad61b72b3700261c5b70"},"version":"0.5.1.1"},
|
||||||
|
"network": {"dependencies":["base","bytestring","deepseq"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/network-3.1.1.1/network-3.1.1.1.tar.gz"},"name":"network","pinned":{"url":["https://hackage.haskell.org/package/network-3.1.1.1/network-3.1.1.1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/network-3.1.1.1.tar.gz"],"sha256":"d7ef590173fff2ab522fbc167f3fafb867e4ecfca279eb3ef0d137b51f142c9a","cabal-sha256":"b704cb6676c03e98267190df797497587576a2e96094550ea143415239bbe66e"},"version":"3.1.1.1"},
|
||||||
|
"network-uri": {"dependencies":["base","deepseq","parsec","template-haskell"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/network-uri-2.6.3.0/network-uri-2.6.3.0.tar.gz"},"name":"network-uri","pinned":{"url":["https://hackage.haskell.org/package/network-uri-2.6.3.0/network-uri-2.6.3.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/network-uri-2.6.3.0.tar.gz"],"sha256":"a01c1389f15d2cc2e847914737f706133bb11f0c5f8ee89711a36a25b7afa723","cabal-sha256":"d2d9ff3a80d9b2d1ff317a354bc0c56cc109c69a4c2449e5fc712d3ddce83ede"},"version":"2.6.3.0"},
|
||||||
|
"optparse-applicative": {"dependencies":["ansi-wl-pprint","base","process","transformers","transformers-compat"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/optparse-applicative-0.15.1.0/optparse-applicative-0.15.1.0.tar.gz"},"name":"optparse-applicative","pinned":{"url":["https://hackage.haskell.org/package/optparse-applicative-0.15.1.0/optparse-applicative-0.15.1.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/optparse-applicative-0.15.1.0.tar.gz"],"sha256":"4db3675fd1e0594afdf079db46f4cd412d483835d703e7c07e1a1a37d6f046f3","cabal-sha256":"29ff6146aabf54d46c4c8788e8d1eadaea27c94f6d360c690c5f6c93dac4b07e"},"version":"0.15.1.0"},
|
||||||
|
"optparse-generic": {"dependencies":["Only","base","bytestring","optparse-applicative","system-filepath","text","time","transformers","void"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/optparse-generic-1.4.2/optparse-generic-1.4.2.tar.gz"},"name":"optparse-generic","pinned":{"url":["https://hackage.haskell.org/package/optparse-generic-1.4.2/optparse-generic-1.4.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/optparse-generic-1.4.2.tar.gz"],"sha256":"26fb7261cef593dd7c9534614dc858894e9f29148975a1505f13c43aec356401","cabal-sha256":"c019eb6dfc83476b8afb520afae6b3a6f95c8061a745fbe272a8e043cc7b3dc9"},"version":"1.4.2"},
|
||||||
|
"parallel": {"dependencies":["array","base","containers","deepseq","ghc-prim"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/parallel-3.2.2.0/parallel-3.2.2.0.tar.gz"},"name":"parallel","pinned":{"url":["https://hackage.haskell.org/package/parallel-3.2.2.0/parallel-3.2.2.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/parallel-3.2.2.0.tar.gz"],"sha256":"170453a71a2a8b31cca63125533f7771d7debeb639700bdabdd779c34d8a6ef6","cabal-sha256":"c69372af9a39a06739e1d0eaa1f2d8be6b86493a53dbbc455e7b30479c491c6a"},"version":"3.2.2.0"},
|
||||||
|
"parsec": {"dependencies":[],"location":{"type":"core"},"name":"parsec","version":"3.1.14.0"},
|
||||||
|
"parser-combinators": {"dependencies":["base"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/parser-combinators-1.2.1/parser-combinators-1.2.1.tar.gz"},"name":"parser-combinators","pinned":{"url":["https://hackage.haskell.org/package/parser-combinators-1.2.1/parser-combinators-1.2.1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/parser-combinators-1.2.1.tar.gz"],"sha256":"03162e40cde50253529fa452165b681d5064d03ad07992800702156adfb6254d","cabal-sha256":"16c3490e007ec10b1255a2b36fb483d000156d555269107131241d9e0fa96412"},"version":"1.2.1"},
|
||||||
|
"parsers": {"dependencies":["attoparsec","base","base-orphans","binary","charset","containers","mtl","parsec","scientific","semigroups","text","transformers","unordered-containers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/parsers-0.12.10/parsers-0.12.10.tar.gz"},"name":"parsers","pinned":{"url":["https://hackage.haskell.org/package/parsers-0.12.10/parsers-0.12.10.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/parsers-0.12.10.tar.gz"],"sha256":"17b91f1318ca54679395b382a056df633fdb44fbb962eca66b1787f957af1a6c","cabal-sha256":"3b0d9f15a64cb9a0c66b79b8653e9074e21a1c96d96cfad63ef2984219323499"},"version":"0.12.10"},
|
||||||
|
"pathtype": {"dependencies":["QuickCheck","base","deepseq","directory","semigroups","tagged","time","transformers","utility-ht"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/pathtype-0.8.1.1/pathtype-0.8.1.1.tar.gz"},"name":"pathtype","pinned":{"url":["https://hackage.haskell.org/package/pathtype-0.8.1.1/pathtype-0.8.1.1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/pathtype-0.8.1.1.tar.gz"],"sha256":"c7dce1871e65c6447bbe138d6ccecd5abcde84aba6fac7003e7755d238c2420c","cabal-sha256":"8561fa48933c1ebd53b48a37806e4d72de31fee0bca4794cb1cd486468987a30"},"version":"0.8.1.1"},
|
||||||
|
"pretty": {"dependencies":[],"location":{"type":"core"},"name":"pretty","version":"1.1.3.6"},
|
||||||
|
"pretty-show": {"dependencies":["array","base","filepath","ghc-prim","happy","haskell-lexer","pretty","text"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/pretty-show-1.10/pretty-show-1.10.tar.gz"},"name":"pretty-show","pinned":{"url":["https://hackage.haskell.org/package/pretty-show-1.10/pretty-show-1.10.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/pretty-show-1.10.tar.gz"],"sha256":"307f9086e0b063d439dc4f513e36a145e8a57f23de448aefae2a6c00f6da6fd2","cabal-sha256":"bfef8da0ac4db4fc7f41edfec9e9a701ac206418d70702bff1e40f20d6a2b1f1"},"version":"1.10"},
|
||||||
|
"pretty-simple": {"dependencies":["Cabal","ansi-terminal","base","cabal-doctest","containers","mtl","text","transformers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/pretty-simple-3.3.0.0/pretty-simple-3.3.0.0.tar.gz"},"name":"pretty-simple","pinned":{"url":["https://hackage.haskell.org/package/pretty-simple-3.3.0.0/pretty-simple-3.3.0.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/pretty-simple-3.3.0.0.tar.gz"],"sha256":"d01637fcfb61911bdd7e85127d79a3e862634c05b5402a3ec64ce36b5149033d","cabal-sha256":"c74f9c3c7234daddddfe2f0567adaced9c40e7c72c24abc3224fc2dcb5a350a2"},"version":"3.3.0.0"},
|
||||||
|
"prettyprinter": {"dependencies":["base","text"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/prettyprinter-1.6.2/prettyprinter-1.6.2.tar.gz"},"name":"prettyprinter","pinned":{"url":["https://hackage.haskell.org/package/prettyprinter-1.6.2/prettyprinter-1.6.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/prettyprinter-1.6.2.tar.gz"],"sha256":"d193f1902630d0a652a7043aa37069224ea56a3ff0fa1b57f57ebf5ece777008","cabal-sha256":"d9fa76aebce33c5c179a66128dfb5639e9257325d11c68569c6574dd8e112cde"},"version":"1.6.2"},
|
||||||
|
"prettyprinter-ansi-terminal": {"dependencies":["ansi-terminal","base","prettyprinter","text"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/prettyprinter-ansi-terminal-1.1.2/prettyprinter-ansi-terminal-1.1.2.tar.gz"},"name":"prettyprinter-ansi-terminal","pinned":{"url":["https://hackage.haskell.org/package/prettyprinter-ansi-terminal-1.1.2/prettyprinter-ansi-terminal-1.1.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/prettyprinter-ansi-terminal-1.1.2.tar.gz"],"sha256":"e26b7338b90830a126e210ec164426bd3da7d099a319d1287a40e3efce2a1799","cabal-sha256":"90b3b7650bc5b9f0e58da43621d23c817acfc0cf5ce71244b9bd11b8c9f95e3a"},"version":"1.1.2"},
|
||||||
|
"primitive": {"dependencies":["base","deepseq","transformers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/primitive-0.7.1.0/primitive-0.7.1.0.tar.gz"},"name":"primitive","pinned":{"url":["https://hackage.haskell.org/package/primitive-0.7.1.0/primitive-0.7.1.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/primitive-0.7.1.0.tar.gz"],"sha256":"6bebecfdf2a57787d9fd5231bfd612b65a92edd7b33a973b2a0f11312b89a3f0","cabal-sha256":"6a237bb338bcc43193077ff8e8c0f0ce2de14c652231496a15672e8b563a07e2"},"version":"0.7.1.0"},
|
||||||
|
"process": {"dependencies":[],"location":{"type":"core"},"name":"process","version":"1.6.8.2"},
|
||||||
|
"profunctors": {"dependencies":["base","base-orphans","bifunctors","comonad","contravariant","distributive","tagged","transformers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/profunctors-5.5.2/profunctors-5.5.2.tar.gz"},"name":"profunctors","pinned":{"url":["https://hackage.haskell.org/package/profunctors-5.5.2/profunctors-5.5.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/profunctors-5.5.2.tar.gz"],"sha256":"5f1579aab8afae377c7c7c0d0ed95b0bc58003b6dad2d494045f7472a398af7c","cabal-sha256":"55132b7e8a5461e8f7fdc4e06839109fe42ad581225cd151342753fddb824aa8"},"version":"5.5.2"},
|
||||||
|
"proto-lens": {"dependencies":["base","bytestring","containers","deepseq","ghc-prim","lens-family","parsec","pretty","primitive","profunctors","tagged","text","transformers","vector"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/proto-lens-0.7.0.0/proto-lens-0.7.0.0.tar.gz"},"name":"proto-lens","pinned":{"url":["https://hackage.haskell.org/package/proto-lens-0.7.0.0/proto-lens-0.7.0.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/proto-lens-0.7.0.0.tar.gz"],"sha256":"3aa3b6aa1a1fa51cc2b7a60dde79112a7d87d6846cc8d65f3c3ad6c4b81ce7b5","cabal-sha256":"2c44a62375f7712f9381f84b1d30cee2f94384f1c98801db2f4450359a8e5036"},"version":"0.7.0.0"},
|
||||||
|
"proto-lens-jsonpb": {"dependencies":["aeson","attoparsec","base","base64-bytestring","bytestring","proto-lens-runtime","text","vector"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/proto-lens-jsonpb-0.2.0.2/proto-lens-jsonpb-0.2.0.2.tar.gz"},"name":"proto-lens-jsonpb","pinned":{"url":["https://hackage.haskell.org/package/proto-lens-jsonpb-0.2.0.2/proto-lens-jsonpb-0.2.0.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/proto-lens-jsonpb-0.2.0.2.tar.gz"],"sha256":"a2b6085c73d1315ee34a62be9131321d44536c093c4b1f482a6f76bf024128e5","cabal-sha256":"a361759d615e54a58a2f92eecd991ec8ad563dfdf0169bef2ea02054cf581da1"},"version":"0.2.0.2"},
|
||||||
|
"proto-lens-runtime": {"dependencies":["base","bytestring","containers","deepseq","filepath","lens-family","proto-lens","text","vector"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/proto-lens-runtime-0.7.0.0/proto-lens-runtime-0.7.0.0.tar.gz"},"name":"proto-lens-runtime","pinned":{"url":["https://hackage.haskell.org/package/proto-lens-runtime-0.7.0.0/proto-lens-runtime-0.7.0.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/proto-lens-runtime-0.7.0.0.tar.gz"],"sha256":"4dc1aebe1755c0b831d3cb029c7bfea04f252d0b1cee8653dded37baeab3aa63","cabal-sha256":"d6cfab159a63f5c42a1a507638c674a714dfa5f69a06f559e8da840eaafde3ab"},"version":"0.7.0.0"},
|
||||||
|
"quickcheck-io": {"dependencies":["HUnit","QuickCheck","base"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/quickcheck-io-0.2.0/quickcheck-io-0.2.0.tar.gz"},"name":"quickcheck-io","pinned":{"url":["https://hackage.haskell.org/package/quickcheck-io-0.2.0/quickcheck-io-0.2.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/quickcheck-io-0.2.0.tar.gz"],"sha256":"fb779119d79fe08ff4d502fb6869a70c9a8d5fd8ae0959f605c3c937efd96422","cabal-sha256":"7bf0b68fb90873825eb2e5e958c1b76126dcf984debb998e81673e6d837e0b2d"},"version":"0.2.0"},
|
||||||
|
"random": {"dependencies":["base","time"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/random-1.1/random-1.1.tar.gz"},"name":"random","pinned":{"url":["https://hackage.haskell.org/package/random-1.1/random-1.1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/random-1.1.tar.gz"],"sha256":"b718a41057e25a3a71df693ab0fe2263d492e759679b3c2fea6ea33b171d3a5a","cabal-sha256":"7b67624fd76ddf97c206de0801dc7e888097e9d572974be9b9ea6551d76965df"},"version":"1.1"},
|
||||||
|
"raw-strings-qq": {"dependencies":["base","template-haskell"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/raw-strings-qq-1.1/raw-strings-qq-1.1.tar.gz"},"name":"raw-strings-qq","pinned":{"url":["https://hackage.haskell.org/package/raw-strings-qq-1.1/raw-strings-qq-1.1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/raw-strings-qq-1.1.tar.gz"],"sha256":"2e011ec26aeaa53ab43c30b7d9b5b0f661f24b4ebef8884c12c571353c0fbed3","cabal-sha256":"3ea0f14f036649e3576749aef0db4dd0b1102c5331f2e0e2551250e2030ce669"},"version":"1.1"},
|
||||||
|
"recursion-schemes": {"dependencies":["base","base-orphans","comonad","free","template-haskell","th-abstraction","transformers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/recursion-schemes-5.1.3/recursion-schemes-5.1.3.tar.gz"},"name":"recursion-schemes","pinned":{"url":["https://hackage.haskell.org/package/recursion-schemes-5.1.3/recursion-schemes-5.1.3.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/recursion-schemes-5.1.3.tar.gz"],"sha256":"b21736e54b1d5fb0149624e95f2d8d8fd3413bb0972eda6a70e5753d3c9f1528","cabal-sha256":"cbcf3c36e1733a83fb8cda305bde2de18a2fbab53692e3301263964def430107"},"version":"5.1.3"},
|
||||||
|
"reducers": {"dependencies":["array","base","bytestring","containers","fingertree","hashable","semigroupoids","semigroups","text","transformers","unordered-containers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/reducers-3.12.3/reducers-3.12.3.tar.gz"},"name":"reducers","pinned":{"url":["https://hackage.haskell.org/package/reducers-3.12.3/reducers-3.12.3.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/reducers-3.12.3.tar.gz"],"sha256":"7186733767405984c1eda96b18908f458b379f116a1589cd66f4319fe8458e27","cabal-sha256":"8ba7676deae4059bca9c162927c28fd5f3b767640f6be0c96e1d2a35793919ec"},"version":"3.12.3"},
|
||||||
|
"reflection": {"dependencies":["base","template-haskell"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/reflection-2.1.6/reflection-2.1.6.tar.gz"},"name":"reflection","pinned":{"url":["https://hackage.haskell.org/package/reflection-2.1.6/reflection-2.1.6.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/reflection-2.1.6.tar.gz"],"sha256":"bf3e14917ebb329a53701a3cce0afe670f20037a0148dbfa5cbfa574ed6ba6cd","cabal-sha256":"044acb7caf41a9d8246878f849baed2dffbc4582d0a1e5c7c079d4287239e970"},"version":"2.1.6"},
|
||||||
|
"resourcet": {"dependencies":["base","containers","exceptions","mtl","primitive","transformers","unliftio-core"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/resourcet-1.2.4.2/resourcet-1.2.4.2.tar.gz"},"name":"resourcet","pinned":{"url":["https://hackage.haskell.org/package/resourcet-1.2.4.2/resourcet-1.2.4.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/resourcet-1.2.4.2.tar.gz"],"sha256":"17f20842043ad199961a801b6efb1233b9098eb3537f8395844268f6a223eb87","cabal-sha256":"d57516781d1721f70aa0b9ec8ea9200ab02bf76349cb76d73ad57729302289cc"},"version":"1.2.4.2"},
|
||||||
|
"safe-exceptions": {"dependencies":["base","deepseq","exceptions","transformers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/safe-exceptions-0.1.7.0/safe-exceptions-0.1.7.0.tar.gz"},"name":"safe-exceptions","pinned":{"url":["https://hackage.haskell.org/package/safe-exceptions-0.1.7.0/safe-exceptions-0.1.7.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/safe-exceptions-0.1.7.0.tar.gz"],"sha256":"18cddc587b52b6faa0287fb6ad6c964d1562571ea2c8ff57a194dd54b5fba069","cabal-sha256":"416cad3470889813fbffd9dce83c7610268a4a52acadeb87a66e388e09a90275"},"version":"0.1.7.0"},
|
||||||
|
"scientific": {"dependencies":["base","binary","bytestring","containers","deepseq","hashable","integer-gmp","integer-logarithms","primitive","text"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/scientific-0.3.6.2/scientific-0.3.6.2.tar.gz"},"name":"scientific","pinned":{"url":["https://hackage.haskell.org/package/scientific-0.3.6.2/scientific-0.3.6.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/scientific-0.3.6.2.tar.gz"],"sha256":"278d0afc87450254f8a76eab21b5583af63954efc9b74844a17a21a68013140f","cabal-sha256":"dd49abc76bd8e2b57e7a057dc2bb742a00527b4bf9350f9374be03b5934e55d8"},"version":"0.3.6.2"},
|
||||||
|
"semigroupoids": {"dependencies":["Cabal","base","base-orphans","bifunctors","cabal-doctest","comonad","containers","contravariant","distributive","hashable","tagged","template-haskell","transformers","transformers-compat","unordered-containers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/semigroupoids-5.3.4/semigroupoids-5.3.4.tar.gz"},"name":"semigroupoids","pinned":{"url":["https://hackage.haskell.org/package/semigroupoids-5.3.4/semigroupoids-5.3.4.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/semigroupoids-5.3.4.tar.gz"],"sha256":"00d2e48973c3ab0a5d52616728ed63d0509454c8328148f698720014d7c58964","cabal-sha256":"3a6445a6105348d01c71aa608e1a8644ad78c01ec17dc70b87cf161cac92a100"},"version":"5.3.4"},
|
||||||
|
"semigroups": {"dependencies":["base"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/semigroups-0.19.1/semigroups-0.19.1.tar.gz"},"name":"semigroups","pinned":{"url":["https://hackage.haskell.org/package/semigroups-0.19.1/semigroups-0.19.1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/semigroups-0.19.1.tar.gz"],"sha256":"79e761e64b862564a3470d5d356cb6b060b14452d675859aed3b2d1e14646648","cabal-sha256":"ecae129621e0d2f77bef2f01e4458c2e0567ab6e1f39579c61d7cec8058ebb0e"},"version":"0.19.1"},
|
||||||
|
"semilattices": {"dependencies":["base","containers","hashable","unordered-containers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/semilattices-0.0.0.4/semilattices-0.0.0.4.tar.gz"},"name":"semilattices","pinned":{"url":["https://hackage.haskell.org/package/semilattices-0.0.0.4/semilattices-0.0.0.4.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/semilattices-0.0.0.4.tar.gz"],"sha256":"f2a2a40ea0ef2e0f0aebcb64c74897c5060a74234988535266d98dd79f406191","cabal-sha256":"333707e460923711d1edbdd02ebe1c3957d4e0808eab9886747b52ee3e443639"},"version":"0.0.0.4"},
|
||||||
|
"setenv": {"dependencies":["base","unix"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/setenv-0.1.1.3/setenv-0.1.1.3.tar.gz"},"name":"setenv","pinned":{"url":["https://hackage.haskell.org/package/setenv-0.1.1.3/setenv-0.1.1.3.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/setenv-0.1.1.3.tar.gz"],"sha256":"e358df39afc03d5a39e2ec650652d845c85c80cc98fe331654deafb4767ecb32","cabal-sha256":"c5916ac0d2a828473cd171261328a290afe0abd799db1ac8c310682fe778c45b"},"version":"0.1.1.3"},
|
||||||
|
"smallcheck": {"dependencies":["base","logict","mtl","pretty"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/smallcheck-1.2.0/smallcheck-1.2.0.tar.gz"},"name":"smallcheck","pinned":{"url":["https://hackage.haskell.org/package/smallcheck-1.2.0/smallcheck-1.2.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/smallcheck-1.2.0.tar.gz"],"sha256":"d6c79227c6138b287ee8113d2cb95b15a6487d3abb7531309629c57b5e80d9f8","cabal-sha256":"8b431572e6a0503223e0e52014d41084c1b01f2aeea3bd499f6f529b3f6dfa89"},"version":"1.2.0"},
|
||||||
|
"split": {"dependencies":["base"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/split-0.2.3.4/split-0.2.3.4.tar.gz"},"name":"split","pinned":{"url":["https://hackage.haskell.org/package/split-0.2.3.4/split-0.2.3.4.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/split-0.2.3.4.tar.gz"],"sha256":"271fe5104c9f40034aa9a1aad6269bcecc9454bc5a57c247e69e17de996c1f2a","cabal-sha256":"bad9bfc9e8e0aca4ac1f7b3a2767ee6b1c199d4a1b6960db5cc3d7674aee5d73"},"version":"0.2.3.4"},
|
||||||
|
"splitmix": {"dependencies":["base","deepseq","random","time"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/splitmix-0.0.5/splitmix-0.0.5.tar.gz"},"name":"splitmix","pinned":{"url":["https://hackage.haskell.org/package/splitmix-0.0.5/splitmix-0.0.5.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/splitmix-0.0.5.tar.gz"],"sha256":"19f2987ba707c935656371776639588c3252cbb44b66cae16107b13e73b4cd52","cabal-sha256":"4a49661be63f5aea0e132e9ab51be918789bb4dceb4ab9b15b85ba9cbbef5999"},"version":"0.0.5"},
|
||||||
|
"stm": {"dependencies":[],"location":{"type":"core"},"name":"stm","version":"2.5.0.0"},
|
||||||
|
"stm-chans": {"dependencies":["Cabal","base","stm"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/stm-chans-3.0.0.4/stm-chans-3.0.0.4.tar.gz"},"name":"stm-chans","pinned":{"url":["https://hackage.haskell.org/package/stm-chans-3.0.0.4/stm-chans-3.0.0.4.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/stm-chans-3.0.0.4.tar.gz"],"sha256":"2344fc5bfa33d565bad7b009fc0e2c5a7a595060ba149c661f44419fc0d54738","cabal-sha256":"e2eef3cea5251628f7b2ad22c24a1e5d08b83c19be4bd886ab0d7fed58ef2a6d"},"version":"3.0.0.4"},
|
||||||
|
"streaming": {"dependencies":["base","containers","ghc-prim","mmorph","mtl","transformers","transformers-base"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/streaming-0.2.3.0/streaming-0.2.3.0.tar.gz"},"name":"streaming","pinned":{"url":["https://hackage.haskell.org/package/streaming-0.2.3.0/streaming-0.2.3.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/streaming-0.2.3.0.tar.gz"],"sha256":"b4008eee1fcee6a9f63d0d31eebefd6cf72731fab65d943831338c3961fafd62","cabal-sha256":"26638a19039b2f447fdbeb430de1f7084c68b6ccd21eff288f5e45cf83670e47"},"version":"0.2.3.0"},
|
||||||
|
"strict": {"dependencies":["assoc","base","binary","bytestring","deepseq","ghc-prim","hashable","text","these","transformers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/strict-0.4/strict-0.4.tar.gz"},"name":"strict","pinned":{"url":["https://hackage.haskell.org/package/strict-0.4/strict-0.4.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/strict-0.4.tar.gz"],"sha256":"279fee78690409ce0878beead4a620f0c0975dba215d6778f183699e3576453f","cabal-sha256":"1b50c7c9c636c3a1bbc7f8873b9be48f6ca0faca4df6eec6a014de6208fb1c0e"},"version":"0.4"},
|
||||||
|
"syb": {"dependencies":["base"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/syb-0.7.1/syb-0.7.1.tar.gz"},"name":"syb","pinned":{"url":["https://hackage.haskell.org/package/syb-0.7.1/syb-0.7.1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/syb-0.7.1.tar.gz"],"sha256":"e04a9c7ae48d9fe25e9b7a064f7122d39c710753544511e15df7a6e87fdfe700","cabal-sha256":"8d37b1e4d04a9aa8512dc6c2a06e02afc015a2fd3e735bdfeeacb5e2e853323c"},"version":"0.7.1"},
|
||||||
|
"system-filepath": {"dependencies":["Cabal","base","bytestring","deepseq","text"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/system-filepath-0.4.14/system-filepath-0.4.14.tar.gz"},"name":"system-filepath","pinned":{"url":["https://hackage.haskell.org/package/system-filepath-0.4.14/system-filepath-0.4.14.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/system-filepath-0.4.14.tar.gz"],"sha256":"1656ce3c0d585650784ceb3f794748286e19fb635f557e7b29b0897f8956d993","cabal-sha256":"e8ce7d24d7008a825e5d03aa672950a0e8178ac54c3de7134f36c3a7e37694a2"},"version":"0.4.14"},
|
||||||
|
"tagged": {"dependencies":["base","deepseq","template-haskell","transformers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/tagged-0.8.6/tagged-0.8.6.tar.gz"},"name":"tagged","pinned":{"url":["https://hackage.haskell.org/package/tagged-0.8.6/tagged-0.8.6.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/tagged-0.8.6.tar.gz"],"sha256":"ad16def0884cf6f05ae1ae8e90192cf9d8d9673fa264b249499bd9e4fac791dd","cabal-sha256":"1f7ca84e6c88cbb923641c60041c9f56c34f1a889759cc073cdf10542b441ff9"},"version":"0.8.6"},
|
||||||
|
"tasty": {"dependencies":["ansi-terminal","async","base","clock","containers","mtl","optparse-applicative","stm","tagged","unbounded-delays","unix","wcwidth"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/tasty-1.2.3/tasty-1.2.3.tar.gz"},"name":"tasty","pinned":{"url":["https://hackage.haskell.org/package/tasty-1.2.3/tasty-1.2.3.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/tasty-1.2.3.tar.gz"],"sha256":"8ca107abc12a476cfbc84f516f30a614c81be315903f910bc681137eb702f662","cabal-sha256":"bba67074e5326d57e8f53fc1dabcb6841daa4dc51b053506eb7f40a6f49a0497"},"version":"1.2.3"},
|
||||||
|
"tasty-golden": {"dependencies":["async","base","bytestring","containers","deepseq","directory","filepath","mtl","optparse-applicative","process","tagged","tasty","temporary","text"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/tasty-golden-2.3.3.2/tasty-golden-2.3.3.2.tar.gz"},"name":"tasty-golden","pinned":{"url":["https://hackage.haskell.org/package/tasty-golden-2.3.3.2/tasty-golden-2.3.3.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/tasty-golden-2.3.3.2.tar.gz"],"sha256":"a936183e57da934c593d715ae0f122e36beaa935cea9fa19d21386730972b1a5","cabal-sha256":"2aa053398a20f9890702d910e6aade8971f9f1281817a72e74fc67eebe6cba4e"},"version":"2.3.3.2"},
|
||||||
|
"tasty-hedgehog": {"dependencies":["base","hedgehog","tagged","tasty"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/tasty-hedgehog-1.0.0.2/tasty-hedgehog-1.0.0.2.tar.gz"},"name":"tasty-hedgehog","pinned":{"url":["https://hackage.haskell.org/package/tasty-hedgehog-1.0.0.2/tasty-hedgehog-1.0.0.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/tasty-hedgehog-1.0.0.2.tar.gz"],"sha256":"65538f7371f5ccf52c232a4723d931dd0278ea49bf478c2abe50c3bc4c1d5bef","cabal-sha256":"f491beff9461e849f5008e5a65b2c9d7f97365e170c7ae03ea170c90b6d6877c"},"version":"1.0.0.2"},
|
||||||
|
"tasty-hspec": {"dependencies":["QuickCheck","base","hspec","hspec-core","tasty","tasty-quickcheck","tasty-smallcheck"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/tasty-hspec-1.1.5.1/tasty-hspec-1.1.5.1.tar.gz"},"name":"tasty-hspec","pinned":{"url":["https://hackage.haskell.org/package/tasty-hspec-1.1.5.1/tasty-hspec-1.1.5.1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/tasty-hspec-1.1.5.1.tar.gz"],"sha256":"fe889ec0f7b3991c46a07d9ff9cf09608a73a18f434a7480d2a09c79e56f3345","cabal-sha256":"7f2e21d2f2a235401d661b93f53e374ab0456a7d2fe542871235905c2e804775"},"version":"1.1.5.1"},
|
||||||
|
"tasty-hunit": {"dependencies":["base","call-stack","tasty"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/tasty-hunit-0.10.0.2/tasty-hunit-0.10.0.2.tar.gz"},"name":"tasty-hunit","pinned":{"url":["https://hackage.haskell.org/package/tasty-hunit-0.10.0.2/tasty-hunit-0.10.0.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/tasty-hunit-0.10.0.2.tar.gz"],"sha256":"4823c85efe15f36e1d71867aaa6cdcdff3ef39f97492321e9bb8a30c742f6ef7","cabal-sha256":"8e8bd5807cec650f5aebc5ada07b57620c863e69145e65249651c1b48d97bd70"},"version":"0.10.0.2"},
|
||||||
|
"tasty-quickcheck": {"dependencies":["QuickCheck","base","optparse-applicative","random","tagged","tasty"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/tasty-quickcheck-0.10.1.1/tasty-quickcheck-0.10.1.1.tar.gz"},"name":"tasty-quickcheck","pinned":{"url":["https://hackage.haskell.org/package/tasty-quickcheck-0.10.1.1/tasty-quickcheck-0.10.1.1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/tasty-quickcheck-0.10.1.1.tar.gz"],"sha256":"f8326014c975ad31cac9e3da55f4bc86d0b26139557987d58c1f9554a8f31f25","cabal-sha256":"b0a751bbe706447fd11cac21a7bbcf919631813aafaba3ce460a421348f6935c"},"version":"0.10.1.1"},
|
||||||
|
"tasty-smallcheck": {"dependencies":["async","base","smallcheck","tagged","tasty"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/tasty-smallcheck-0.8.1/tasty-smallcheck-0.8.1.tar.gz"},"name":"tasty-smallcheck","pinned":{"url":["https://hackage.haskell.org/package/tasty-smallcheck-0.8.1/tasty-smallcheck-0.8.1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/tasty-smallcheck-0.8.1.tar.gz"],"sha256":"314ba7acdb7793730e7677f553a72dd6a4a8f9a45ff3e931cd7d384affb3c6d8","cabal-sha256":"37728da9451a857c7410353267c995abea92f8f395fcabd9fe7bf732cc2e3e2e"},"version":"0.8.1"},
|
||||||
|
"template-haskell": {"dependencies":[],"location":{"type":"core"},"name":"template-haskell","version":"2.16.0.0"},
|
||||||
|
"temporary": {"dependencies":["base","directory","exceptions","filepath","random","transformers","unix"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/temporary-1.3/temporary-1.3.tar.gz"},"name":"temporary","pinned":{"url":["https://hackage.haskell.org/package/temporary-1.3/temporary-1.3.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/temporary-1.3.tar.gz"],"sha256":"8c442993694b5ffca823ce864af95bd2841fb5264ee511c61cf48cc71d879890","cabal-sha256":"3a66c136f700dbf42f3c5000ca93e80b26dead51e54322c83272b236c1ec8ef1"},"version":"1.3"},
|
||||||
|
"terminal-size": {"dependencies":["base"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/terminal-size-0.3.2.1/terminal-size-0.3.2.1.tar.gz"},"name":"terminal-size","pinned":{"url":["https://hackage.haskell.org/package/terminal-size-0.3.2.1/terminal-size-0.3.2.1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/terminal-size-0.3.2.1.tar.gz"],"sha256":"b5c23e964756bc13914649a67d63233f59ad0a813abe7cadeb2fc9d586dc9658","cabal-sha256":"7b2d8e0475a46961d07ddfb91dee618de70eff55d9ba0402ebeac1f9dcf9b18b"},"version":"0.3.2.1"},
|
||||||
|
"terminfo": {"dependencies":[],"location":{"type":"core"},"name":"terminfo","version":"0.4.1.4"},
|
||||||
|
"text": {"dependencies":[],"location":{"type":"core"},"name":"text","version":"1.2.3.2"},
|
||||||
|
"tf-random": {"dependencies":["base","primitive","random","time"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/tf-random-0.5/tf-random-0.5.tar.gz"},"name":"tf-random","pinned":{"url":["https://hackage.haskell.org/package/tf-random-0.5/tf-random-0.5.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/tf-random-0.5.tar.gz"],"sha256":"2e30cec027b313c9e1794d326635d8fc5f79b6bf6e7580ab4b00186dadc88510","cabal-sha256":"14012837d0f0e18fdbbe3d56e67da8622ee5e20b180abce952dd50bd9f36b326"},"version":"0.5"},
|
||||||
|
"th-abstraction": {"dependencies":["base","containers","ghc-prim","template-haskell"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/th-abstraction-0.3.2.0/th-abstraction-0.3.2.0.tar.gz"},"name":"th-abstraction","pinned":{"url":["https://hackage.haskell.org/package/th-abstraction-0.3.2.0/th-abstraction-0.3.2.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/th-abstraction-0.3.2.0.tar.gz"],"sha256":"36fef33ad0f34b9b8fb5552fe6187579a00d5f90d938e9bc24d382a9919feb79","cabal-sha256":"9b5b4e6e2bbff9b075ad7751ee98e2107090bd17b51d5442695b8990e4db6521"},"version":"0.3.2.0"},
|
||||||
|
"these": {"dependencies":["assoc","base","binary","deepseq","hashable"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/these-1.1.1.1/these-1.1.1.1.tar.gz"},"name":"these","pinned":{"url":["https://hackage.haskell.org/package/these-1.1.1.1/these-1.1.1.1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/these-1.1.1.1.tar.gz"],"sha256":"d798c9f56e17def441e8f51e54cc11afdb3e76c6a9d1e9ee154e9a78da0bf508","cabal-sha256":"3b63a3942f1da4ff97786221e3c654b969b54d570fef2cf4db97da4ea26a36cc"},"version":"1.1.1.1"},
|
||||||
|
"time": {"dependencies":[],"location":{"type":"core"},"name":"time","version":"1.9.3"},
|
||||||
|
"time-compat": {"dependencies":["base","base-orphans","deepseq","time"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/time-compat-1.9.3/time-compat-1.9.3.tar.gz"},"name":"time-compat","pinned":{"url":["https://hackage.haskell.org/package/time-compat-1.9.3/time-compat-1.9.3.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/time-compat-1.9.3.tar.gz"],"sha256":"bb6a44e667945ddca8ded93e041ee91986a4a19f59e149a5dd21fdb1bfa3db88","cabal-sha256":"a1a0a8b088be6a7be50c7c0bf156ce876151b1cbe14261736965e361c8073b2a"},"version":"1.9.3"},
|
||||||
|
"transformers": {"dependencies":[],"location":{"type":"core"},"name":"transformers","version":"0.5.6.2"},
|
||||||
|
"transformers-base": {"dependencies":["base","base-orphans","stm","transformers","transformers-compat"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/transformers-base-0.4.5.2/transformers-base-0.4.5.2.tar.gz"},"name":"transformers-base","pinned":{"url":["https://hackage.haskell.org/package/transformers-base-0.4.5.2/transformers-base-0.4.5.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/transformers-base-0.4.5.2.tar.gz"],"sha256":"d0c80c63fdce6a077dd8eda4f1ff289b85578703a3f1272e141d400fe23245e8","cabal-sha256":"e4d8155470905ba2942033a1537fc4cf91927d1c9b34693fd57ddf3bc02334af"},"version":"0.4.5.2"},
|
||||||
|
"transformers-compat": {"dependencies":["base","ghc-prim","transformers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/transformers-compat-0.6.5/transformers-compat-0.6.5.tar.gz"},"name":"transformers-compat","pinned":{"url":["https://hackage.haskell.org/package/transformers-compat-0.6.5/transformers-compat-0.6.5.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/transformers-compat-0.6.5.tar.gz"],"sha256":"da67cf11515da751b32a8ce6e96549f7268f7c435769ad19dc9766b69774620b","cabal-sha256":"50b00c57bf3fc379ec2477bfc261a2aebc983084488478adb29854f193af4696"},"version":"0.6.5"},
|
||||||
|
"tree-sitter": {"dependencies":["base","bytestring","containers","directory","filepath","split","template-haskell","unordered-containers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/tree-sitter-0.9.0.2/tree-sitter-0.9.0.2.tar.gz"},"name":"tree-sitter","pinned":{"url":["https://hackage.haskell.org/package/tree-sitter-0.9.0.2/tree-sitter-0.9.0.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/tree-sitter-0.9.0.2.tar.gz"],"sha256":"ae9edfd5415e8f243b14010491d149add962cf47d0fab7a36844faf34f0587cb","cabal-sha256":"a8e9821575a1bf90455cc164619f5a59f6cc01d66a870944ece84a755b6450d9"},"version":"0.9.0.2"},
|
||||||
|
"tree-sitter-go": {"dependencies":["base","tree-sitter"],"location":{"type":"vendored"},"name":"tree-sitter-go","version":"0.5.0.2"},
|
||||||
|
"tree-sitter-java": {"dependencies":["base","tree-sitter"],"location":{"type":"vendored"},"name":"tree-sitter-java","version":"0.7.0.2"},
|
||||||
|
"tree-sitter-json": {"dependencies":["base","tree-sitter"],"location":{"type":"vendored"},"name":"tree-sitter-json","version":"0.7.0.2"},
|
||||||
|
"tree-sitter-php": {"dependencies":["base","tree-sitter"],"location":{"type":"vendored"},"name":"tree-sitter-php","version":"0.5.0.1"},
|
||||||
|
"tree-sitter-python": {"dependencies":["base","tree-sitter"],"location":{"type":"vendored"},"name":"tree-sitter-python","version":"0.9.0.3"},
|
||||||
|
"tree-sitter-ql": {"dependencies":["base","tree-sitter"],"location":{"type":"vendored"},"name":"tree-sitter-ql","version":"0.1.0.4"},
|
||||||
|
"tree-sitter-ruby": {"dependencies":["base","tree-sitter"],"location":{"type":"vendored"},"name":"tree-sitter-ruby","version":"0.5.0.3"},
|
||||||
|
"tree-sitter-rust": {"dependencies":["base","tree-sitter"],"location":{"type":"vendored"},"name":"tree-sitter-rust","version":"0.1.0.1"},
|
||||||
|
"tree-sitter-tsx": {"dependencies":["base","tree-sitter"],"location":{"type":"vendored"},"name":"tree-sitter-tsx","version":"0.5.0.2"},
|
||||||
|
"tree-sitter-typescript": {"dependencies":["base","tree-sitter"],"location":{"type":"vendored"},"name":"tree-sitter-typescript","version":"0.5.0.2"},
|
||||||
|
"trifecta": {"dependencies":["Cabal","ansi-terminal","array","base","blaze-builder","blaze-html","blaze-markup","bytestring","cabal-doctest","charset","comonad","containers","deepseq","fingertree","ghc-prim","hashable","lens","mtl","parsers","prettyprinter","prettyprinter-ansi-terminal","profunctors","reducers","semigroups","transformers","unordered-containers","utf8-string"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/trifecta-2.1/trifecta-2.1.tar.gz"},"name":"trifecta","pinned":{"url":["https://hackage.haskell.org/package/trifecta-2.1/trifecta-2.1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/trifecta-2.1.tar.gz"],"sha256":"7a25c6b07b6ca4c6465b9f888444183cd1eab54d2890272010150df7a911233b","cabal-sha256":"2a087ff4b1a6ea9e506a578a4161743b7bf1025e1ef4934a6d5d14f778e7609d"},"version":"2.1"},
|
||||||
|
"type-equality": {"dependencies":["base"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/type-equality-1/type-equality-1.tar.gz"},"name":"type-equality","pinned":{"url":["https://hackage.haskell.org/package/type-equality-1/type-equality-1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/type-equality-1.tar.gz"],"sha256":"4728b502a211454ef682a10d7a3e817c22d06ba509df114bb267ef9d43a08ce8","cabal-sha256":"d36324583fbafc5698c3f898ccf7cf041cbf42435fc2559c28e8f77682739a8e"},"version":"1"},
|
||||||
|
"unbounded-delays": {"dependencies":["base"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/unbounded-delays-0.1.1.0/unbounded-delays-0.1.1.0.tar.gz"},"name":"unbounded-delays","pinned":{"url":["https://hackage.haskell.org/package/unbounded-delays-0.1.1.0/unbounded-delays-0.1.1.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/unbounded-delays-0.1.1.0.tar.gz"],"sha256":"8aa7f7d10a8d0073518804db76c3ef4c313359994ef175122341b0bce07329c7","cabal-sha256":"8e57c6ffb72ed605b85c69d3b3a7ebbbbb70bfb5e9b9816309f1f733240838f2"},"version":"0.1.1.0"},
|
||||||
|
"unix": {"dependencies":[],"location":{"type":"core"},"name":"unix","version":"2.7.2.2"},
|
||||||
|
"unliftio-core": {"dependencies":["base","transformers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/unliftio-core-0.2.0.1/unliftio-core-0.2.0.1.tar.gz"},"name":"unliftio-core","pinned":{"url":["https://hackage.haskell.org/package/unliftio-core-0.2.0.1/unliftio-core-0.2.0.1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/unliftio-core-0.2.0.1.tar.gz"],"sha256":"919f0d1297ea2f5373118553c1df2a9405d8b9e31a8307e829da67d4953c299a","cabal-sha256":"9b3e44ea9aacacbfc35b3b54015af450091916ac3618a41868ebf6546977659a"},"version":"0.2.0.1"},
|
||||||
|
"unordered-containers": {"dependencies":["base","deepseq","hashable"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/unordered-containers-0.2.12.0/unordered-containers-0.2.12.0.tar.gz"},"name":"unordered-containers","pinned":{"url":["https://hackage.haskell.org/package/unordered-containers-0.2.12.0/unordered-containers-0.2.12.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/unordered-containers-0.2.12.0.tar.gz"],"sha256":"481dab4ea59f10feaa7d65ecb8ae5d136d130bdbacf2356d414b3926d638bd20","cabal-sha256":"164a47850c4536c8b7cc12f74578588cf3b6c331f04e671306d2dcb806284bb1"},"version":"0.2.12.0"},
|
||||||
|
"utf8-string": {"dependencies":["base","bytestring"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/utf8-string-1.0.1.1/utf8-string-1.0.1.1.tar.gz"},"name":"utf8-string","pinned":{"url":["https://hackage.haskell.org/package/utf8-string-1.0.1.1/utf8-string-1.0.1.1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/utf8-string-1.0.1.1.tar.gz"],"sha256":"fb0b9e3acbe0605bcd1c63e51f290a7bbbe6628dfa3294ff453e4235fbaef140","cabal-sha256":"68cc6cf665e7212334a51b63d6936daeaca023b2cfe8637d130acfe95f91700b"},"version":"1.0.1.1"},
|
||||||
|
"utility-ht": {"dependencies":["base"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/utility-ht-0.0.15/utility-ht-0.0.15.tar.gz"},"name":"utility-ht","pinned":{"url":["https://hackage.haskell.org/package/utility-ht-0.0.15/utility-ht-0.0.15.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/utility-ht-0.0.15.tar.gz"],"sha256":"845c79cdf0925997ec190a761460b50a9577cd290567b9252e31d075cd6f0f91","cabal-sha256":"940b35a19ce392c4fd86d96fecd0efb3c3b8a598af31fe5aca7e9f3b172e284b"},"version":"0.0.15"},
|
||||||
|
"uuid-types": {"dependencies":["base","binary","bytestring","deepseq","hashable","random","text"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/uuid-types-1.0.3/uuid-types-1.0.3.tar.gz"},"name":"uuid-types","pinned":{"url":["https://hackage.haskell.org/package/uuid-types-1.0.3/uuid-types-1.0.3.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/uuid-types-1.0.3.tar.gz"],"sha256":"9276517ab24a9b06f39d6e3c33c6c2b4ace1fc2126dbc1cd9806866a6551b3fd","cabal-sha256":"4e27aa142cb37f391e78f36d13139ba0a907675429a21e8f2cfae9223202dd7e"},"version":"1.0.3"},
|
||||||
|
"vector": {"dependencies":["base","deepseq","ghc-prim","primitive"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/vector-0.12.1.2/vector-0.12.1.2.tar.gz"},"name":"vector","pinned":{"url":["https://hackage.haskell.org/package/vector-0.12.1.2/vector-0.12.1.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/vector-0.12.1.2.tar.gz"],"sha256":"3b6e27683f6f20b37b8a35d0fab9e34b57dad72ac64cb16f428726780d4011bd","cabal-sha256":"9291bc581f36e51d5bda9fce57cb980fbec3dd292996896f285fef39eb80a9a0"},"version":"0.12.1.2"},
|
||||||
|
"vector-algorithms": {"dependencies":["base","bytestring","primitive","vector"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/vector-algorithms-0.8.0.3/vector-algorithms-0.8.0.3.tar.gz"},"name":"vector-algorithms","pinned":{"url":["https://hackage.haskell.org/package/vector-algorithms-0.8.0.3/vector-algorithms-0.8.0.3.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/vector-algorithms-0.8.0.3.tar.gz"],"sha256":"1ac41f014663fd318b34a76b80e6d8f32f1629ef4996ae7304f31597a0d07387","cabal-sha256":"477ef5ac82fdd28a39536ed0a767faec3425802827abee485be31db5bc6f5e90"},"version":"0.8.0.3"},
|
||||||
|
"vector-builder": {"dependencies":["base","base-prelude","semigroups","vector"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/vector-builder-0.3.8/vector-builder-0.3.8.tar.gz"},"name":"vector-builder","pinned":{"url":["https://hackage.haskell.org/package/vector-builder-0.3.8/vector-builder-0.3.8.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/vector-builder-0.3.8.tar.gz"],"sha256":"a39afd7ac50c42de77660d235017be38ef50f792b6a98212accf687445a18073","cabal-sha256":"184ed15a76025943ccaf556887cf60bca21359e3ccf4d7735def394ab76b76f1"},"version":"0.3.8"},
|
||||||
|
"void": {"dependencies":["base"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/void-0.7.3/void-0.7.3.tar.gz"},"name":"void","pinned":{"url":["https://hackage.haskell.org/package/void-0.7.3/void-0.7.3.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/void-0.7.3.tar.gz"],"sha256":"53af758ddc37dc63981671e503438d02c6f64a2d8744e9bec557a894431f7317","cabal-sha256":"13d30f62fcdf065e595d679d4ac8b4b0c1bb1a1b73db7b5b5a8f857cb5c8a546"},"version":"0.7.3"},
|
||||||
|
"wcwidth": {"dependencies":["base","containers"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/wcwidth-0.0.2/wcwidth-0.0.2.tar.gz"},"name":"wcwidth","pinned":{"url":["https://hackage.haskell.org/package/wcwidth-0.0.2/wcwidth-0.0.2.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/wcwidth-0.0.2.tar.gz"],"sha256":"ffc68736a3bbde3e8157710f29f4a99c0ca593c41194579c54a92c62f6c12ed8","cabal-sha256":"77531eb6683c505c22ab3fa11bbc43d3ce1e7dac21401d4d5a19677d348bb5f3"},"version":"0.0.2"},
|
||||||
|
"wl-pprint-annotated": {"dependencies":["base","containers","deepseq","text"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/wl-pprint-annotated-0.1.0.1/wl-pprint-annotated-0.1.0.1.tar.gz"},"name":"wl-pprint-annotated","pinned":{"url":["https://hackage.haskell.org/package/wl-pprint-annotated-0.1.0.1/wl-pprint-annotated-0.1.0.1.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/wl-pprint-annotated-0.1.0.1.tar.gz"],"sha256":"6b662b244b2e318a2923dc7057d707369a29ea4a0e721b4710eac7239cc727af","cabal-sha256":"0b8fd3649bfe72d155a4379e4c88b7ef00408f6f4973f63333787fd2e1b5ba1e"},"version":"0.1.0.1"},
|
||||||
|
"yaml": {"dependencies":["aeson","attoparsec","base","bytestring","conduit","containers","directory","filepath","libyaml","mtl","resourcet","scientific","template-haskell","text","transformers","unordered-containers","vector"],"location":{"type":"hackage","url":"https://hackage.haskell.org/package/yaml-0.11.4.0/yaml-0.11.4.0.tar.gz"},"name":"yaml","pinned":{"url":["https://hackage.haskell.org/package/yaml-0.11.4.0/yaml-0.11.4.0.tar.gz","https://s3.amazonaws.com/hackage.fpcomplete.com/package/yaml-0.11.4.0.tar.gz"],"sha256":"da4ec8469bb5cc43d131ffee90e89a430a65baad4caa611e91cd9b684168c96c","cabal-sha256":"2583bfc6ea297290fa1bae47242627898896e2647aaaf7662d6d7df9a2dac0b2"},"version":"0.11.4.0"}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user