Safe Haskell | None |
---|---|
Language | Haskell2010 |
This module provides facilities for obtaining the types of
various Futhark constructs. Typically, you will need to execute
these in a context where type information is available as a
Scope
; usually by using a monad that is an instance of
HasScope
. The information is returned as a list of ExtType
values - one for each of the values the Futhark construct returns.
Some constructs (such as subexpressions) can produce only a single
value, and their typing functions hence do not return a list.
Some representations may have more specialised facilities enabling even more information - for example, Futhark.IR.Mem exposes functionality for also obtaining information about the storage location of results.
Synopsis
- expExtType :: (HasScope rep m, TypedOp (Op rep)) => Exp rep -> m [ExtType]
- expExtTypeSize :: (RepTypes rep, TypedOp (Op rep)) => Exp rep -> Int
- subExpType :: HasScope t m => SubExp -> m Type
- subExpResType :: HasScope t m => SubExpRes -> m Type
- basicOpType :: HasScope rep m => BasicOp -> m [Type]
- mapType :: SubExp -> Lambda rep -> [Type]
- module Futhark.IR.RetType
- module Futhark.IR.Prop.Scope
- class TypedOp op where
Documentation
expExtType :: (HasScope rep m, TypedOp (Op rep)) => Exp rep -> m [ExtType] Source #
The type of an expression.
expExtTypeSize :: (RepTypes rep, TypedOp (Op rep)) => Exp rep -> Int Source #
The number of values returned by an expression.
subExpResType :: HasScope t m => SubExpRes -> m Type Source #
Type type of a SubExpRes
- not that this might refer to names
bound in the body containing the result.
mapType :: SubExp -> Lambda rep -> [Type] Source #
mapType f arrts
wraps each element in the return type of f
in
an array with size equal to the outermost dimension of the first
element of arrts
.
Return type
module Futhark.IR.RetType
Type environment
module Futhark.IR.Prop.Scope
Extensibility
class TypedOp op where Source #
Any operation must define an instance of this class, which describes the type of the operation (at the value level).