{-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies #-} ----------------------------------------------------------------------------- -- | -- Module : Data.Tensor.Class -- Copyright : Copyright (c) , Patrick Perry -- License : BSD3 -- Maintainer : Patrick Perry -- Stability : experimental -- -- Overloaded interface for mutable and immutable tensors. This module -- contains the common functionality for the classes in -- "Data.Tensor.Class.ITensor" and "Data.Tensor.Class.MTensor". -- module Data.Tensor.Class ( Shaped(..), ) where import Data.Ix -- | The base class for objects with shapes and indices -- (i.e. Vector, Matrix, etc.). class (Ix i, Show i) => Shaped x i | x -> i where -- | Get the shape of the tensor. For vectors this is the dimension. -- For matrices, this will be a pair @(m,n)@ of the number of rows -- and columns. shape :: x n e -> i -- | Get the range of valid indices in the tensor. bounds :: x n e -> (i,i)