packages feed

dhall-to-cabal-1.3.2.0: dhall/utils/majorVersions.dhall

let Version = ../types/Version.dhall

let VersionRange = ../types/VersionRange.dhall

let Versions =
      { unionVersionRanges =
          ../VersionRange/unionVersionRanges.dhall
      , majorBoundVersion =
          ../VersionRange/majorBoundVersion.dhall
      , noVersion =
          ../VersionRange/noVersion.dhall
      }

let majorVersions
    : Text → List Version → { package : Text, bounds : VersionRange }
    =   λ(package : Text)
      → λ(versions : List Version)
      → { package =
            package
        , bounds =
            Optional/fold
            VersionRange
            ( List/fold
              Version
              versions
              (Optional VersionRange)
              (   λ(v : Version)
                → λ(r : Optional VersionRange)
                → Optional/fold
                  VersionRange
                  r
                  (Optional VersionRange)
                  (   λ(r : VersionRange)
                    → Some
                      ( Versions.unionVersionRanges
                        (Versions.majorBoundVersion v)
                        r
                      )
                  )
                  (Some (Versions.majorBoundVersion v))
              )
              (None VersionRange)
            )
            VersionRange
            (λ(a : VersionRange) → a)
            Versions.noVersion
        }

in  majorVersions