Hoogle Search
Within LTS Haskell 24.34 (ghc-9.10.3)
Note that Stackage only displays results for the latest LTS and Nightly snapshot. Learn more.
startStepHook :: BringUpToDateHooks (m :: Type -> Type) -> Int -> Text -> m ()beam-migrate Database.Beam.Migrate.Simple Called at the beginning of each step with the step index and description
-
beam-migrate Database.Beam.Migrate.Types Represents a particular step in a migration
MigrationStep :: forall be a next . Text -> Migration be a -> (a -> next) -> MigrationStep be nextbeam-migrate Database.Beam.Migrate.Types No documentation available.
newtype
MigrationSteps be from tobeam-migrate Database.Beam.Migrate.Types A series of MigrationSteps that take a database from the schema in from to the one in to. Use the migrationStep function and the arrow interface to sequence MigrationSteps.
MigrationSteps :: Kleisli (F (MigrationStep be)) from to -> MigrationSteps be from tobeam-migrate Database.Beam.Migrate.Types No documentation available.
migrationStep :: Text -> (a -> Migration be a') -> MigrationSteps be a a'beam-migrate Database.Beam.Migrate.Types Create a MigrationSteps from the given description and migration function.
-
beam-migrate Database.Beam.Migrate.Types Run the migration steps between the given indices, using a custom execution function.
-
clash-prelude Clash.Prelude.DataFlow Reduce or extend the synchronization granularity of parallel compositions.
lockStep :: forall (dom :: Domain) . LockStep a b => DataFlow dom a Bool b bclash-prelude Clash.Prelude.DataFlow Reduce the synchronization granularity to a single Boolean value. Given:
f :: DataFlow Bool Bool a b g :: DataFlow Bool Bool c d h :: DataFlow Bool Bool (b,d) (p,q)
We cannot simply write:(f `parDF` g) `seqDF` h
because, f `parDF` g, has type, DataFlow (Bool,Bool) (Bool,Bool) (a,c) (b,d), which does not match the expected synchronization granularity of h. We need a circuit in between that has the type:DataFlow (Bool,Bool) Bool (b,d) (b,d)
Simply &&-ing the valid signals in the forward direction, and duplicating the ready signal in the backward direction is however not enough. We also need to make sure that f does not update its output when g's output is invalid and visa versa, as h can only consume its input when both f and g are producing valid data. g's ready port is hence only asserted when h is ready and f is producing valid data. And f's ready port is only asserted when h is ready and g is producing valid data. f and g will hence be proceeding in lock-step. The lockStep function ensures that all synchronization signals are properly connected:(f `parDF` g) `seqDF` lockStep `seqDF` h
Note 1: ensure that the components that you are synchronizing have buffered/delayed ready and valid signals, or lockStep has the potential to introduce combinational loops. You can do this by placing fifoDFs on the parallel channels. Extending the above example, you would write:((f `seqDF` fifoDF d4 Nil) `parDF` (g `seqDF` fifoDF d4 Nil)) `seqDF` lockStep `seqDF` h
Note 2: lockStep works for arbitrarily nested tuples. That is:p :: DataFlow Bool Bool ((b,d),d) z q :: DataFlow ((Bool,Bool),Bool) ((Bool,Bool),Bool) ((a,c),c) ((b,d),d) q = f `parDF` g `parDF` g r = q `seqDF` lockStep `seqDF` p
Does the right thing.expandBFStepped :: (Int, Int) -> BaseField -> Int -> Maybe EFieldcron System.Cron.Internal.Check No documentation available.