module Data.Array.Parallel.Unlifted.Sequential (
UA,
UArr, USegd, SUArr,
lengthU, nullU, emptyU, singletonU, consU, unitsU,
replicateU, replicateEachU, (!:), (+:+),
indexedU, repeatU,
sliceU, extractU,
tailU,
takeU, dropU, splitAtU,
permuteU, bpermuteU, bpermuteDftU, reverseU, updateU,
mapU, zipWithU, zipWith3U,
filterU, packU,
foldlU, foldl1U, foldl1MaybeU,
foldU, fold1U, fold1MaybeU,
scanlU, scanl1U,
scanU, scan1U,
scanResU,
mapAccumLU,
filterSU, packCU,
combineU, combineSU, combineCU,
sliceSU, extractSU, takeCU, dropCU,
elemU, notElemU,
andU, orU, anyU, allU,
sumU, productU,
maximumU, minimumU,
maximumByU, minimumByU,
maximumIndexU, minimumIndexU,
maximumIndexByU, minimumIndexByU,
zipU, zip3U, unzipU, unzip3U, fstU, sndU,
enumFromToU, enumFromThenToU, enumFromStepLenU, enumFromToEachU,
findU, findIndexU,
toU, fromU,
randomU, randomRU,
UIO(..),
concatSU, flattenSU, (>:), segmentU, segmentArrU, segdSU,
lengthSU, singletonSU, replicateSU, replicateCU, (+:+^), indexedSU, (^+:+^), (!:^),
lengthsSU, indicesSU,
fstSU, sndSU, zipSU,
bpermuteSU, bpermuteSU',
mapSU, zipWithSU,
foldlSU, foldSU,
fold1SU,
andSU, orSU,
sumSU, productSU, maximumSU, minimumSU,
enumFromToSU, enumFromThenToSU,
toSU, fromSU,
lengthsUSegd, lengthsToUSegd, toUSegd, fromUSegd,
MUArr, newU, newMU, copyMU, permuteMU,
hasAtomicWriteMU, atomicUpdateMU, unsafeFreezeAllMU,
idstr, name, versnum, date, version, copyright, disclaimer,
lengthU'
) where
import Data.Array.Parallel.Base ((:*:)(..))
import Data.Array.Parallel.Unlifted.Sequential.Flat
import Data.Array.Parallel.Unlifted.Sequential.Segmented
idstr = "$Id: FIXME: Have the build-system produce an id$"
name = "Unlifted.Sequential Array Library"
versnum = "0.6.0"
date = "28 Apr 2006"
version = name ++ ", version " ++ versnum ++ ", " ++ date
copyright = "Copyright (c) [2001..2006] \
\M M T Chakravarty, G Keller & R Leshchinskiy"
disclaimer = "This software is distributed under the terms \
\of the BSD3 license. NO WARRANTY WHATSOEVER IS PROVIDED. \
\See the details in the documentation."
instance (Eq e, UA e) => Eq (UArr e) where
a1 == a2 = lengthU a1 == lengthU a2 && foldlU cmp True (zipU a1 a2)
where
cmp r (e1 :*: e2) = e1 == e2 && r
instance (Eq e, UA e) => Eq (SUArr e) where
a1 == a2 = flattenSU a1 == flattenSU a2