HORIZON HASKELLDocslts/ghc-10.0.xaa25b892026-10-10Search names, modules, packages, or :: a typeCtrl K

GHC 10.0.0.20260917 · lts/ghc-10.0.x · aa25b89 · 2026-10-10

ModuleCabal-syntax-3.18.1.0Haskell2010

Distribution.Types.Dependency

  • 1 type
  • 6 values
datadata Dependency
#

Describes a dependency on a source package (API)

Invariant: package name does not appear as LSubLibName in set of library names.

Constructors

Instances12Eq, Data, Ord, Read, Show, Generic, …
  • Eq DependencyDefined in Cabal-syntax-3.18.1.0 · Distribution.Types.Dependency
  • Data DependencyDefined in Cabal-syntax-3.18.1.0 · Distribution.Types.Dependency
  • Ord DependencyDefined in Cabal-syntax-3.18.1.0 · Distribution.Types.Dependency
  • Read DependencyDefined in Cabal-syntax-3.18.1.0 · Distribution.Types.Dependency
  • Show DependencyDefined in Cabal-syntax-3.18.1.0 · Distribution.Types.Dependency
  • Generic DependencyDefined in Cabal-syntax-3.18.1.0 · Distribution.Types.Dependency
  • NFData DependencyDefined in Cabal-syntax-3.18.1.0 · Distribution.Types.Dependency
  • Binary DependencyDefined in Cabal-syntax-3.18.1.0 · Distribution.Types.Dependency
  • Parsec DependencyDefined in Cabal-syntax-3.18.1.0 · Distribution.Types.Dependency
    Example1 expression
    simpleParsec "mylib:sub" :: Maybe DependencyJust (Dependency (PackageName "mylib") (OrLaterVersion (mkVersion [0])) (fromNonEmpty (LSubLibName (UnqualComponentName "sub") :| [])))
    Example1 expression
    simpleParsec "mylib:{sub1,sub2}" :: Maybe DependencyJust (Dependency (PackageName "mylib") (OrLaterVersion (mkVersion [0])) (fromNonEmpty (LSubLibName (UnqualComponentName "sub1") :| [LSubLibName (UnqualComponentName "sub2")])))
    Example1 expression
    simpleParsec "mylib:{ sub1 , sub2 }" :: Maybe DependencyJust (Dependency (PackageName "mylib") (OrLaterVersion (mkVersion [0])) (fromNonEmpty (LSubLibName (UnqualComponentName "sub1") :| [LSubLibName (UnqualComponentName "sub2")])))
    Example1 expression
    simpleParsec "mylib:{ sub1 , sub2 } ^>= 42" :: Maybe DependencyJust (Dependency (PackageName "mylib") (MajorBoundVersion (mkVersion [42])) (fromNonEmpty (LSubLibName (UnqualComponentName "sub1") :| [LSubLibName (UnqualComponentName "sub2")])))
    Example1 expression
    simpleParsec "mylib:{ } ^>= 42" :: Maybe DependencyNothing
    Example1 expression
    traverse_ print (map simpleParsec ["mylib:mylib", "mylib:{mylib}", "mylib:{mylib,sublib}" ] :: [Maybe Dependency])Just (Dependency (PackageName "mylib") (OrLaterVersion (mkVersion [0])) (fromNonEmpty (LMainLibName :| [])))Just (Dependency (PackageName "mylib") (OrLaterVersion (mkVersion [0])) (fromNonEmpty (LMainLibName :| [])))Just (Dependency (PackageName "mylib") (OrLaterVersion (mkVersion [0])) (fromNonEmpty (LMainLibName :| [LSubLibName (UnqualComponentName "sublib")])))

    Spaces around colon are not allowed:

    Example1 expression
    map simpleParsec ["mylib: sub", "mylib :sub", "mylib: {sub1,sub2}", "mylib :{sub1,sub2}"] :: [Maybe Dependency][Nothing,Nothing,Nothing,Nothing]

    Sublibrary syntax is accepted since cabal-version: 3.0

    Example1 expression
    map (`simpleParsec'` "mylib:sub") [CabalSpecV2_4, CabalSpecV3_0] :: [Maybe Dependency][Nothing,Just (Dependency (PackageName "mylib") (OrLaterVersion (mkVersion [0])) (fromNonEmpty (LSubLibName (UnqualComponentName "sub") :| [])))]
  • Pretty DependencyDefined in Cabal-syntax-3.18.1.0 · Distribution.Types.Dependency
    Example1 expression
    prettyShow $ Dependency (mkPackageName "pkg") anyVersion mainLibSet"pkg"
    Example1 expression
    prettyShow $ Dependency (mkPackageName "pkg") anyVersion $ NES.insert (LSubLibName $ mkUnqualComponentName "sublib") mainLibSet"pkg:{pkg,sublib}"
    Example1 expression
    prettyShow $ Dependency (mkPackageName "pkg") anyVersion $ NES.singleton (LSubLibName $ mkUnqualComponentName "sublib")"pkg:sublib"
    Example1 expression
    prettyShow $ Dependency (mkPackageName "pkg") anyVersion $ NES.insert (LSubLibName $ mkUnqualComponentName "sublib-b") $ NES.singleton (LSubLibName $ mkUnqualComponentName "sublib-a")"pkg:{sublib-a,sublib-b}"
  • Structured DependencyDefined in Cabal-syntax-3.18.1.0 · Distribution.Types.Dependency
  • type Rep Dependency = D1 ('MetaData "Dependency" "Distribution.Types.Dependency" "Cabal-syntax-3.18.1.0-a008" 'False) (C1 ('MetaCons "Dependency" 'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 PackageName) :*: (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 VersionRange) :*: S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (NonEmptySet LibraryName)))))Defined in Cabal-syntax-3.18.1.0 · Distribution.Types.Dependency