Skip to content

Instantly share code, notes, and snippets.

@ggb
Last active August 29, 2015 14:07
Show Gist options
  • Save ggb/7f30bed94f88aad531d6 to your computer and use it in GitHub Desktop.
Save ggb/7f30bed94f88aad531d6 to your computer and use it in GitHub Desktop.
defmodule SleepSort do
def sort(list_of_numbers) do
{:ok, sorted_list} = Agent.start(fn -> [] end)
Enum.map(list_of_numbers, fn number ->
Task.start(fn ->
:timer.sleep(number * 1)
Agent.update(sorted_list, fn l -> [ number | l ] end)
end)
end)
:timer.sleep(Enum.max(list_of_numbers) + 1)
Agent.get(sorted_list, fn list -> Enum.reverse(list) end)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment