module Language.Egison.Type.Tensor
(
normalizeTensorType
) where
import Language.Egison.Type.Types
normalizeTensorType :: Type -> Type
normalizeTensorType :: Type -> Type
normalizeTensorType (TTensor (TTensor Type
t)) = Type -> Type
normalizeTensorType (Type -> Type
TTensor Type
t)
normalizeTensorType (TTensor Type
t) = Type -> Type
TTensor (Type -> Type
normalizeTensorType Type
t)
normalizeTensorType (TTuple [Type]
ts) = [Type] -> Type
TTuple ((Type -> Type) -> [Type] -> [Type]
forall a b. (a -> b) -> [a] -> [b]
map Type -> Type
normalizeTensorType [Type]
ts)
normalizeTensorType (TCollection Type
t) = Type -> Type
TCollection (Type -> Type
normalizeTensorType Type
t)
normalizeTensorType (TInductive String
name [Type]
ts) = String -> [Type] -> Type
TInductive String
name ((Type -> Type) -> [Type] -> [Type]
forall a b. (a -> b) -> [a] -> [b]
map Type -> Type
normalizeTensorType [Type]
ts)
normalizeTensorType (THash Type
k Type
v) = Type -> Type -> Type
THash (Type -> Type
normalizeTensorType Type
k) (Type -> Type
normalizeTensorType Type
v)
normalizeTensorType (TMatcher Type
t) = Type -> Type
TMatcher (Type -> Type
normalizeTensorType Type
t)
normalizeTensorType (TFun Type
a Type
r) = Type -> Type -> Type
TFun (Type -> Type
normalizeTensorType Type
a) (Type -> Type
normalizeTensorType Type
r)
normalizeTensorType (TIO Type
t) = Type -> Type
TIO (Type -> Type
normalizeTensorType Type
t)
normalizeTensorType (TIORef Type
t) = Type -> Type
TIORef (Type -> Type
normalizeTensorType Type
t)
normalizeTensorType Type
t = Type
t