I have been going over my notes and noting the places my students have
trouble with standard Elixir documentation. One of them is this example
code that starts a child for a dynamic supervisor:

{:ok, agent1} = DynamicSupervisor.start_child(MyApp.DynamicSupervisor, {
Agent, fn -> %{} end}) Agent.update(agent1, &Map.put(&1, :key, "value"))
Agent.get(agent1, & &1) #=> %{key: "value"} {:ok, agent2} =
DynamicSupervisor.start_child(MyApp.DynamicSupervisor, {Agent, fn -> %{} end
}) Agent.get(agent2, & &1) #=> %{} DynamicSupervisor.count_children(
MyApp.DynamicSupervisor) #=> %{active: 2, specs: 2, supervisors: 0,
workers: 2}


This code gives students two problems:

1. It expresses a concept using an arguably more complex concept, and not a
common one: agents.

2. The child spec is not like typical gen servers because the initial value
is a function.

I propose that we start a stack rather than an agent. Failing that, I
propose we label the concepts in the start spec with intermediate
variables.

-bt
-- 

Regards,
Bruce Tate
CEO

<https://bowtie.mailbutler.io/tracking/hit/f8218219-d2a8-4de4-9fef-1cdde6e723f6/c7c97460-016e-45fb-a4ab-0a70318c7b97>

Groxio, LLC.
512.799.9366
br...@grox.io
grox.io

-- 
You received this message because you are subscribed to the Google Groups 
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elixir-lang-core+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/CAFXvW-45ExCPTm%3Ds-YCu1FoVpxeLWuLTt%2BDs6wV7-BzLPLDkGw%40mail.gmail.com.

Reply via email to