úÎ!Â@     (c) 2019-2021 Edward KmettBSD-2-Clause OR Apache-2.0Edward Kmett <ekmett@gmail.com> experimental non-portableNone27XkÁ ptrdiff So long as  returns an , we're stuck with size of  = size of  ptrdiff_tptrdiff is a groupoid, so Diff a a< is a group, and as such it forms a module over the integersptrdiffInvert a pointer É, e.g. convert a pointer to a field member to one that computes the location of the parent, or one that computes the offset of the next item into one that computes the offset of the previous element.ptrdiffZCalculate the position of the next elment of a given type when they are packed in densely. ptrdiff_Calculate the position of the previous element of a given type when they are packed in densely. ptrdiffAdvance n. (possibly negative) items in a dense packing. ptrdiff using a * between pointers to calculate the offset. ptrdiff using a * between pointers to calculate the offset.ptrdiffGdue to finalizers this doesn't _quite_ satisfy ForeignPtr a * Diff a b  - ForeignPtr a * ForeignPtr b     6      !ptrdiff-0-inplaceForeign.Ptr.Diff DiffTorsoractdiffDiffgetDiff.*invnextprevadvance peekDiffOff pokeDiffOff$fCategoryTYPEDiff$fDiffTorsorForeignPtr$fDiffTorsorFunPtr$fDiffTorsorPtr$fEqDiff $fOrdDiff $fShowDiff $fReadDiff $fDataDiff $fGenericDiffbaseGHC.PtrminusPtrghc-prim GHC.TypesIntForeign.Storablepeekpoke