Slide 88
Slide 88 text
defmodule Contractual do
use ExContract
def rgb, do: spec(is_integer() and &(0 <= &1 and &1 <= 255))
def hex, do: spec(is_binary() and (&String.starts_with?(&1, "#")))
requires valid?(r, rgb()) and valid?(g, rgb()) and valid?(b, rgb())
ensures valid?(result, hex())
def rgb_to_hex(r, g, b) do
#…
end
end