'!$&      !"#$% Safe-InferedXNewtype for mutable types whose state thread parameter is in the third-to-last position YNewtype for mutable types whose state thread parameter is in the second-to-last position The  PhaseChangeI class ties together types which provide a mutable and an immutable view Z on the same data. The mutable type must have a phantom type parameter representing the \ state thread it is being used in. Many types have this type parameter in the wrong place B (not at the end): instances for them can be provided using the  and  newtypes. QShould return the same data it got as input, viewed as a mutable type, making no  changes. TShould return the same data it got as input, viewed as an immutable type, making no  changes. QShould make a perfect copy of the input argument, leaving nothing shared between ; the original and the copy, and making no other changes. YReturns the input argument viewed as a mutable type. The input argument must not be used  afterwards. \Returns the input argument viewed as an immutable type. The input argument must not be used  afterwards. Make a copy of mutable data. .Get a copy of immutable data in mutable form. .Get a copy of mutable data in immutable form. HProduce immutable data from a mutating computation. No copies are made. YMake an update of immutable data by applying a mutating action. This function allows for  copy elision. Each chain of "s makes only one copy. A chain of s on  top of a  makes no copies. MRead a value from immutable data with a reading-computation on mutable data. N This function is referentially transparent as long as the computation does G not mutate its input argument, but there is no way to enforce this. *&' () !"#$%*&' () !"#$%!&' () !"#$% Safe-Infered*Data.Vector.Unboxed +Data.Vector.Primitive ,Data.Vector.Storable - Data.Vector .Data.Array.Unboxed / Data.Array 0Data.Primitive.Array 1Data.Primitive.ByteArray *+,-./01*+,-./01Unsafe % %Unsafe    Trustworthy  !"#$ !" #$2      !"#$%&'()*+,-./0123456phasechange-0.1Data.PhaseChange.ImplData.PhaseChangeData.PhaseChange.UnsafeData.PhaseChange.InternalData.PhaseChange.InstancesM2unM2M1unM1 ImmutableMutable PhaseChangeThawedFrozenunsafeThawImplunsafeFreezeImplcopyImpl unsafeThaw unsafeFreezecopythawfreezefrozen updateWithreadWith unsafeThaw1 unsafeFreeze1copy1thaw1freeze1frozen1 updateWith1 readWith1 unsafeThaw2 unsafeFreeze2copy2thaw2freeze2frozen2 updateWith2 readWith2UpdaterMakerthawImplupdateWithResult$fPhaseChangeVectorM1$fPhaseChangeVectorM10$fPhaseChangeVectorM11$fPhaseChangeVectorM12$fPhaseChangeUArrayM2$fPhaseChangeArrayM2$fPhaseChangeArrayM1&$fPhaseChangeByteArrayMutableByteArray