diff options
| author | Christine Dodrill <me@christine.website> | 2019-04-05 16:28:20 +0000 |
|---|---|---|
| committer | Christine Dodrill <me@christine.website> | 2019-04-05 16:28:20 +0000 |
| commit | 6aa771c3a3cdd99a1b82cf48b1d37edc8ded0e06 (patch) | |
| tree | efe9d8d522527d8ca6c1c6fb271630323b8359dd | |
| parent | 53de3948151edcf002d42fb4879e07ccb0be0969 (diff) | |
| download | x-6aa771c3a3cdd99a1b82cf48b1d37edc8ded0e06.tar.xz x-6aa771c3a3cdd99a1b82cf48b1d37edc8ded0e06.zip | |
maybedoer: new package
| -rw-r--r-- | maybedoer/maybedoer.go | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/maybedoer/maybedoer.go b/maybedoer/maybedoer.go new file mode 100644 index 0000000..d75eaa5 --- /dev/null +++ b/maybedoer/maybedoer.go @@ -0,0 +1,24 @@ +package maybedoer + +// Impl sequences a set of actions to be performed via calls to +// `Maybe` such that any previous error prevents new actions from being +// performed. +// +// This is, conceptually, just a go-ification of the Maybe monad. +type Impl struct { + err error +} + +// Maybe performs `f` if no previous call to a Maybe'd action resulted +// in an error +func (c *Impl) Maybe(f func() error) { + if c.err == nil { + c.err = f() + } +} + +// Error returns the first error encountered in the Error chain. +func (c *Impl) Error() error { + return c.err +} + |
