futhask-base-0.1.0.0: src/Futhask/Array/Unit.hs
{-# LANGUAGE TypeFamilyDependencies, FlexibleContexts, GADTs, FlexibleInstances #-}
{-|
Unit Array
-}
module Futhask.Array.Unit where
import Futhask.Array.Element
import Futhask.Array.Boxed
data UnitArray = UnitArray Int
data MUnitArray = MUnitArray Int
instance Element () where
type Array () = UnitArray
type MArray () = MUnitArray
size (UnitArray sz) = sz
msize (MUnitArray sz) = sz
unsafeRead _ _ = ()
unsafePeek _ _ = pure ()
unsafePoke _ _ _ = pure ()
unsafeThaw (UnitArray sz) = pure $ MUnitArray sz
unsafeFreeze (MUnitArray sz) = pure $ UnitArray sz
unsafeSlice _ _ sz = UnitArray sz
scratch sz = pure $ MUnitArray sz
instance Element UnitArray where
type Array UnitArray = BArray UnitArray
type MArray UnitArray = MBArray UnitArray
size = sizeB
msize = msizeB
unsafeRead = unsafeReadB
unsafePeek = unsafePeekB
unsafePoke = unsafePokeB
unsafeThaw = unsafeThawB
unsafeFreeze = unsafeFreezeB
unsafeSlice = unsafeSliceB
scratch = scratchB