1
0
mirror of https://github.com/tensorflow/haskell.git synced 2024-06-02 19:13:34 +02:00
tensorflow-haskell/tensorflow-queue
Judah Jacobson 2c5c879037 Introduce a MonadBuild class, and remove buildAnd. (#83)
This change adds a class that both `Build` and `Session` are instances of:

    class MonadBuild m where
        build :: Build a -> m a

All stateful ops (generated and manually written) now have a signature that returns
an instance of `MonadBuild` (rather than just `Build`).  For example:

    assign_ :: (MonadBuild m, TensorType t)
            => Tensor Ref t -> Tensor v t -> m (Tensor Ref t)

This lets us remove a bunch of spurious calls to `build` in user code.  It also
lets us replace the pattern `buildAnd run foo` with the simpler pattern `foo >>= run`
(or `run =<< foo`, which is sometimes nicer when foo is a complicated expression).

I went ahead and deleted `buildAnd` altogether since it seems to lead to
confusion; in particular a few tests had `buildAnd run . pure` which is
actually equivalent to just `run`.
2017-03-18 12:08:53 -07:00
..
src/TensorFlow Introduce a MonadBuild class, and remove buildAnd. (#83) 2017-03-18 12:08:53 -07:00
tests Introduce a MonadBuild class, and remove buildAnd. (#83) 2017-03-18 12:08:53 -07:00
Setup.hs Initial commit 2016-10-24 19:26:42 +00:00
tensorflow-queue.cabal Introduce a MonadBuild class, and remove buildAnd. (#83) 2017-03-18 12:08:53 -07:00