Parallel task ventilator in Elixir

defmodule Taskvent do
@moduledoc """
Generated by erl2ex (http://github.com/dazuma/erl2ex)
From Erlang source: (Unknown source file)
At: 2019-12-20 13:57:36

"""

def main() do
{:ok, context} = :erlzmq.context()
{:ok, sender} = :erlzmq.socket(context, :push)
:ok = :erlzmq.bind(sender, 'tcp://*:5557')
{:ok, sink} = :erlzmq.socket(context, :push)
:ok = :erlzmq.connect(sink, 'tcp://localhost:5558')
{:ok, _} = :io.fread('Press Enter when workers are ready: ', [])
:io.format('Sending task to workers~n', [])
:ok = :erlzmq.send(sink, "0")
totalCost = send_tasks(sender, 100, 0)
:io.format('Total expected cost: ~b msec~n', [totalCost])
:ok = :erlzmq.close(sink)
:ok = :erlzmq.close(sender)
:erlzmq.term(context, 1000)
end

def send_tasks(_sender, 0, totalCost) do
totalCost
end

def send_tasks(sender, n, totalCost) when n > 0 do
workload = :random.uniform(100) + 1
:ok = :erlzmq.send(sender, :erlang.list_to_binary(:erlang.integer_to_list(workload)))
send_tasks(sender, n - 1, totalCost + workload)
end

end

Taskvent.main