backprop-0.1.5.1: Heterogeneous automatic differentation (backpropagation)

Copyright(c) Justin Le 2018
LicenseBSD3
Maintainerjustin@jle.im
Stabilityexperimental
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell2010

Prelude.Backprop

Contents

Description

Some lifted versions of common functions found in Prelude (or base in general).

Intended to work with Functor Foldable Traversable instances with "fixed" number of items, i.e. vector-sized vectors. There might be unintended consequences when using it with instances where the number of items is not fixed.

This module is intended to be a catch-all one, so feel free to suggest other functions or submit a PR if you think one would make sense.

Since: 0.1.3.0

Synopsis

Foldable and Traversable

sum :: forall t a s. (Foldable t, Functor t, Num (t a), Num a, Reifies s W) => BVar s (t a) -> BVar s a Source #

Lifted sum

product :: forall t a s. (Foldable t, Functor t, Num (t a), Fractional a, Reifies s W) => BVar s (t a) -> BVar s a Source #

Lifted product

length :: forall t a b s. (Foldable t, Num (t a), Num b, Reifies s W) => BVar s (t a) -> BVar s b Source #

Lifted length.

minimum :: forall t a s. (Foldable t, Functor t, Num a, Ord a, Num (t a), Reifies s W) => BVar s (t a) -> BVar s a Source #

Lifted minimum. Undefined for situations where minimum would be undefined.

maximum :: forall t a s. (Foldable t, Functor t, Num a, Ord a, Num (t a), Reifies s W) => BVar s (t a) -> BVar s a Source #

Lifted maximum. Undefined for situations where maximum would be undefined.

traverse :: forall t f a b s. (Traversable t, Applicative f, Foldable f, Num a, Num b, Num (f (t b)), Num (t b), Reifies s W) => (BVar s a -> f (BVar s b)) -> BVar s (t a) -> BVar s (f (t b)) Source #

Lifted traverse. Lifts backpropagatable functions to be backpropagatable functions on Traversable Functors.

Really intended only for Traversable and Applicative instances with fixed number of items; untintended consequences might arise when using it with containers with variable number of items.

Functor and Applicative

fmap :: forall f a b s. (Traversable f, Num a, Num b, Num (f b), Reifies s W) => (BVar s a -> BVar s b) -> BVar s (f a) -> BVar s (f b) Source #

Lifted fmap. Lifts backpropagatable functions to be backpropagatable functions on Traversable Functors.

Really intended only for Functor instances with fixed number of items; untintended consequences might arise when using it with containers with variable number of items.

(<$>) :: forall f a b s. (Traversable f, Num a, Num b, Num (f b), Reifies s W) => (BVar s a -> BVar s b) -> BVar s (f a) -> BVar s (f b) Source #

Alias for fmap.

pure :: forall t a s. (Foldable t, Applicative t, Num (t a), Num a, Reifies s W) => BVar s a -> BVar s (t a) Source #

Lifted pure. Really intended only for Applicative instances with fixed number of items; untintended consequences might arise when using it with containers with variable number of items.

liftA2 :: forall f a b c s. (Traversable f, Applicative f, Num a, Num b, Num c, Num (f c), Reifies s W) => (BVar s a -> BVar s b -> BVar s c) -> BVar s (f a) -> BVar s (f b) -> BVar s (f c) Source #

Lifted liftA2. Lifts backpropagatable functions to be backpropagatable functions on Traversable Applicatives.

Really intended only for Traversable and Applicative instances with fixed number of items; untintended consequences might arise when using it with containers with variable number of items.

liftA3 :: forall f a b c d s. (Traversable f, Applicative f, Num a, Num b, Num c, Num d, Num (f d), Reifies s W) => (BVar s a -> BVar s b -> BVar s c -> BVar s d) -> BVar s (f a) -> BVar s (f b) -> BVar s (f c) -> BVar s (f d) Source #

Lifted liftA3. Lifts backpropagatable functions to be backpropagatable functions on Traversable Applicatives.

Really intended only for Traversable and Applicative instances with fixed number of items; untintended consequences might arise when using it with containers with variable number of items.

Misc

coerce :: forall a b s. (Coercible a b, Num a, Num b, Reifies s W) => BVar s a -> BVar s b Source #

Coerce items inside a BVar.