30-      !"#$%&'()*+,None '(3=HJKM 9Proxy type for GHC's type level literal natural numbers. nE is the number of times the loop will be unrolled into its own body.Loop& is a pure loop, without side-effects. LoopT m a$ represents a loop over a base type m that yields a value ao at each iteration. It can be used as a monad transformer, but there are actually no restrictions on the type mH. However, this library only provides functions to execute the loop if m is at least - (for  ). If m is also ., so is LoopT m#. For any other type, you may use .loop is just an aid to type inference. For loops over a base monad, there are usually other constraints that fix the type, but for pure loops, the compiler often has trouble inferring Identity. YYield a value for this iteration of the loop and skip immediately to the next iteration. MSkip immediately to the next iteration of the loop without yielding a value. DSkip all the remaining iterations of the immediately-enclosing loop. AExecute a loop, sequencing the effects and discarding the values.Iterate forever (or until / is used).3Loop forever without yielding (interesting) values. Standard for loop.Unfold a loop from the left.Do not unroll the loop at all.&0123456 Unrolling factorStarting value of iteratorAdvance the iteratorUnrolling factorStarting value of iterator{Termination condition. The loop will terminate the first time this is false. The termination condition is checked at the start of each iteration.Advance the iteratorUnrolling factor Just (i, a)! advances the loop, yielding an a. Nothing terminates the loop.Starting value789:;<=>?@A  0123465 789:;<=>?@ANone36=KClass of containers that can be iterated over. The class is parameterized over a base monad where the values of the container can be read to allow iterating over mutable structures. The associated type families parameterize the value and index types of the container, allowing the class to be instantiated for container types (unboxed or storable vectors, for example) which do not admit all types as values.)Iterate over the values in the container.5Iterate over the indices and the value at each index. !"#$% %$#"!  !"#$%None None+)Iterate over the values in the container.,5Iterate over the indices and the value at each index.&Starting value of iteratorAdvance the iterator'(Starting value of iterator{Termination condition. The loop will terminate the first time this is false. The termination condition is checked at the start of each iteration.Advance the iterator) Just (i, a)! advances the loop, yielding an a. Nothing terminates the loop.Starting value*+, &'()*+, &'()*+,&'()*+,B       !"#$%&'()*+),-)./01223456789:;<=>?@A loops-0.2.0.0Control.Monad.Loop.InternalControl.Monad.Loop.ForEachControl.Monad.LoopControl.Monad.Loop.Unroll UnrollingUnTLUnrollLoopLoopTrunLoopTloopconscontinue continue_break_exec_iterateforeverforunfoldlwhilenoUnrollForEach ForEachValue ForEachIxforEachiforEach forEachVectoriforEachVectorforEachMVectoriforEachMVector$fForEachLoopTMVector$fForEachLoopTMVector0$fForEachLoopTMVector1$fForEachLoopTMVector2$fForEachLoopTVector$fForEachLoopTVector0$fForEachLoopTVector1$fForEachLoopTVector2$fForEachLoopT[]baseControl.Applicative Applicative Data.FoldableFoldableGHC.Listbreak unrollFor unrollIterate UnrollIndNatZS predUnroll fromTypeLit $fUnrollingS $fUnrollingZ$fTraversableLoopT$fFoldableLoopT$fMonadIOLoopT$fMonadTransLoopT $fMonadLoopT$fApplicativeLoopT$fFunctorLoopT