defmodule QuickSort do def sort([]), do: [] def sort([x | xs]) do with {:ok, smaller} <- {:ok, Enum.filter(xs, &(&1 <= x))}, {:ok, larger} <- {:ok, Enum.filter(xs, &(&1 > x))} do sort(smaller) ++ [x] ++ sort(larger) end end end