Packages

An exploratory look into functors, applicatives, and monads for Elixir.

Current section

Files

Jump to
control lib data writer.ex
Raw

lib/data/writer.ex

defmodule Data.Writer do
import Control.Monoid
@type t :: %__MODULE__{
value: nil,
log: []
}
defstruct value: nil,
log: []
def log(%__MODULE__{} = writer, log) do
writer
|> Map.update!(:log, &(&1 |> mappend([log])))
end
def value(value) do
__MODULE__
|> struct(value: value)
end
end