HORIZON HASKELLDocslts/ghc-9.10.xc74966e2026-09-27Search names, modules, packages, or :: a typeCtrl K

GHC 9.10.3 · lts/ghc-9.10.x · c74966e · 2026-09-27

Moduleghc-9.10.3GHC2021

GHC.Cmm.Dataflow.Block

  • 5 types
  • 24 values
  • Packageghc-9.10.3
  • Exports30
  • LanguageGHC2021
  • LicenceBSD-3-Clause
  • SourceBlock.hs
datadata Extensibility
#

Used at the type level to indicate "open" vs "closed" structure.

Constructors

  • Open

    An "open" structure with a unique, unnamed control-flow edge flowing in or out. "Fallthrough" and concatenation are permitted at an open point.

  • Closed

    A "closed" structure which supports control transfer only through the use of named labels---no "fallthrough" is permitted. The number of control-flow edges is unconstrained.

familytype family IndexedCO (ex :: Extensibility) (a :: k) (b :: k) :: k
#

Either type indexed by closed/open using type families

Instances2IndexedCO
  • type IndexedCO C a _b = aDefined in ghc-9.10.3 · GHC.Cmm.Dataflow.Block
  • type IndexedCO O _a b = bDefined in ghc-9.10.3 · GHC.Cmm.Dataflow.Block
datadata Block (n :: Extensibility -> Extensibility -> Type) (e :: Extensibility) (x :: Extensibility) where
#

A sequence of nodes. May be any of four shapes (OO, OC, CO, CC). Open at the entry means single entry, mutatis mutandis for exit. A closedclosed block is a basic/ block and can't be extended further. Clients should avoid manipulating blocks and should stick to either nodes or graphs.

Constructors

Instances6OutputableP, NonLocal
valuemapBlock3'
  1. :: (n C O -> n' C O, n O O -> n' O O, n O C -> n' O C)
  2. -> Block n e x
  3. -> Block n' e x
#

map over a block, with different functions to apply to first nodes, middle nodes and last nodes respectively. The map is strict.