úÎÌa     peek skeleton ptr fills the skeleton) with data read from memory beginning at ptr. *The skeleton is needed formally for using . 3For instance when reading a list, it is not clear, !how many elements shall be read. 1Using the skeleton you can give this information Kand you also provide information that is not contained in the element type a. For example you can call   peek (replicate 10 ()) ptr 0for reading 10 elements from memory starting at ptr. Like  but uses pure! for construction of the result. pure would be in class Pointed if that would exist. $Thus we use the closest approximate  Applicative.  !"#$%&'(!See (.:) in TypeCompose library. -However I find this library too heavy weight :with respect to type extensions in order to depend on it. ) * +,-.    /           !"#storable-record-0.0.2Foreign.Storable.NewtypeForeign.Storable.TraversableForeign.Storable.RecordForeign.Storable.FixedArray(Foreign.Storable.TraversableUnequalSizessizeOf alignmentpeekpokepeekApplicativeAccess DictionaryelementrunroundUp sizeOfArraypokeNextpeekNext elementTypebaseData.Traversable Traversable peekState pokeState getOffset advanceOffset AlignmentBoxpeek_poke_ComposesizeOf_ alignment_ptrBox