What are the key differences between the Repa 2 and 3 APIs?
To be more specific, I have the following innocuous-looking little Repa 3 program: {-# LANGUAGE QuasiQuotes #-} import Prelude hiding (map, zipWith) import System.Environment (getArgs) import Data.Word (Word8) import Data.Array.Repa import Data.Array.Repa.IO.DevIL import Data.Array.Repa.Stencil import Data.Array.Repa.Stencil.Dim2 main = do [s] <- getArgs img <- runIL $ readImage s let out = output x where RGB x = img runIL . writeImage "out.bmp" . Grey =<< computeP out output img = map cast . blur . blur $ blur grey where grey = traverse img to2D luminance cast n = floor n :: Word8 to2D (Z:.i: