Safe Haskell | Safe-Inferred |
---|---|

Language | Haskell2010 |

- type Shader gs is os = STList gs -> STList is -> STList os
- type Valid gs is os = (StaticList gs, StaticList is, StaticList os, StaticSTList gs, StaticSTList is, StaticSTList os)
- type Member x xs = IsMember x xs ~ True
- class AllTypeable xs
- class Subset xs ys
- type Equal xs ys = And (IsSubset xs ys) (IsSubset ys xs) ~ True
- type family Union xs ys
- type family Insert y xs
- data STList :: [*] -> * where
- stFold :: (forall x. (Typeable x, ShaderType x) => acc -> x -> acc) -> acc -> STList xs -> acc
- staticList :: StaticList xs => Proxy (xs :: [*]) -> (forall x. (Typeable x, ShaderType x) => x -> y) -> [y]
- staticSTList :: StaticSTList xs => Proxy (xs :: [*]) -> (forall x. (Typeable x, ShaderType x) => x -> x) -> STList xs

# Documentation

type Shader gs is os = STList gs -> STList is -> STList os

A function from a (heterogeneous) set of uniforms and a set of inputs (attributes or varyings) to a set of outputs (varyings).

type Valid gs is os = (StaticList gs, StaticList is, StaticList os, StaticSTList gs, StaticSTList is, StaticSTList os)

The condition for a valid `Shader`

.

class AllTypeable xs

AllTypeable ([] *) | |

(Typeable * x, AllTypeable xs) => AllTypeable ((:) * x xs) |

type family Insert y xs

data STList :: [*] -> * where

An heterogeneous set of `ShaderType`

s and `Typeable`

s.

stFold :: (forall x. (Typeable x, ShaderType x) => acc -> x -> acc) -> acc -> STList xs -> acc

staticList :: StaticList xs => Proxy (xs :: [*]) -> (forall x. (Typeable x, ShaderType x) => x -> y) -> [y]

staticSTList :: StaticSTList xs => Proxy (xs :: [*]) -> (forall x. (Typeable x, ShaderType x) => x -> x) -> STList xs