comfort-array-0.4: src/Data/Array/Comfort/Check.hs
module Data.Array.Comfort.Check where
import qualified Data.Array.Comfort.Shape as Shape
import Text.Printf (printf)
{-# INLINE reshape #-}
reshape ::
(Shape.C sh0, Shape.C sh1) =>
String ->
(array0 -> sh0) ->
(sh1 -> array0 -> array1) ->
sh1 -> array0 -> array1
reshape name shape uncheckedReshape sh1 arr =
let n0 = Shape.size $ shape arr
n1 = Shape.size sh1
in if n0 == n1
then uncheckedReshape sh1 arr
else error $
printf
("Array.Comfort.%s.reshape: " ++
"different sizes of old (%d) and new (%d) shape")
name n0 n1