lib/gcode/model/expr.ex

defprotocol Gcode.Model.Expr do
  use Gcode.Result
  alias Gcode.Model.Expr

  @moduledoc """
  A protocol for evaluating expressions.
  """

  @type scalar :: number | boolean | String.t()
  @type expr :: scalar | [scalar]
  @type result :: Result.t(expr)

  @spec evaluate(Expr.t()) :: result
  def evaluate(_expr)
end