```hs λ> let !v = VS.fromList [3,2,5] in isSameVector (SomeVector v) (SomeVector v) False λ> λ> let !v = SomeVector (VS.fromList [3,2,5]) in isSameVector v v True λ> ```
> On 2021-04-06, at 20:34, Henning Thielemann <lemm...@henning-thielemann.de> > wrote: > > > On Tue, 6 Apr 2021, YueCompl wrote: > >> Thanks, it's a good idea. Unfortunately the result remains, making me even >> more curious. >> ```hs >> λ> :set -XBangPatterns >> λ> >> λ> :set -package vector >> package flags have changed, resetting and loading new packages... >> λ> >> λ> import Prelude >> λ> >> λ> import Control.Monad.ST >> λ> import qualified Data.Vector.Storable as VS >> λ> >> λ> :{ >> λ| >> λ| newtype SomeVector = SomeVector (VS.Vector Int) >> λ| >> λ| isSameVector :: SomeVector -> SomeVector -> Bool >> λ| isSameVector (SomeVector !x) (SomeVector !y) = >> λ| x'offset == y'offset && x'fp == y'fp >> λ| where >> λ| (x'fp, x'offset, _x'len) = VS.unsafeToForeignPtr x >> λ| (y'fp, y'offset, _y'len) = VS.unsafeToForeignPtr y >> λ| :} >> λ> >> λ> let !v = VS.fromList [5..200000] in isSameVector (SomeVector v) >> (SomeVector v) >> False > > What happens for [3,2,5]? > > >> λ> >> λ> let !v = SomeVector (VS.fromList [3,2,5]) in isSameVector v v >> True >> λ> >> ```
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs