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