View Source Corsa.StateM.Next (corsa v0.1.2)

The next annotation is utilized to delineate the transition function of the state machine.

Summary

Functions

Errors

iex> defmodule Elixir.Corsa.StateM.Next.ExampleNextError1 do
...>   use Corsa.StateM.Next
...>   next f(x, y) do x + y end
...>   next f(x, y) do x + y end
...>   def f(x, y) do x + y end
...> end
** (Corsa.StateM.NextError) @next for function 'f/2' already defined

iex> defmodule Elixir.Corsa.StateM.Next.ExampleNextError2 do
...>   use Corsa.StateM.Next
...>   next f(x, x) do x + y end
...>   def f(x, y) do x + y end
...> end
** (Corsa.StateM.NextError) arguments in @next should contain different names

iex> defmodule Elixir.Corsa.StateM.Next.ExampleNextError3 do
...>   use Corsa.StateM.Next
...>   next f(x, _) do x + y end
...>   def f(x, y) do x + y end
...> end
** (Corsa.StateM.NextError) arguments in @next cannot be ignored with _

iex> defmodule Elixir.Corsa.StateM.Next.ExampleNextError4 do
...>   use Corsa.StateM, state: true
...>   next f(x, result) do x + y end
...>   def f(x, y) do x + y end
...> end
** (Corsa.StateM.NextError) result cannot be an argument in @next

Functions

Link to this macro

next(arg, list)

View Source (macro)

Errors

iex> defmodule Elixir.Corsa.StateM.Next.ExampleNextError1 do
...>   use Corsa.StateM.Next
...>   next f(x, y) do x + y end
...>   next f(x, y) do x + y end
...>   def f(x, y) do x + y end
...> end
** (Corsa.StateM.NextError) @next for function 'f/2' already defined

iex> defmodule Elixir.Corsa.StateM.Next.ExampleNextError2 do
...>   use Corsa.StateM.Next
...>   next f(x, x) do x + y end
...>   def f(x, y) do x + y end
...> end
** (Corsa.StateM.NextError) arguments in @next should contain different names

iex> defmodule Elixir.Corsa.StateM.Next.ExampleNextError3 do
...>   use Corsa.StateM.Next
...>   next f(x, _) do x + y end
...>   def f(x, y) do x + y end
...> end
** (Corsa.StateM.NextError) arguments in @next cannot be ignored with _

iex> defmodule Elixir.Corsa.StateM.Next.ExampleNextError4 do
...>   use Corsa.StateM, state: true
...>   next f(x, result) do x + y end
...>   def f(x, y) do x + y end
...> end
** (Corsa.StateM.NextError) result cannot be an argument in @next