Skip to content

Instantly share code, notes, and snippets.

@MonkeyIsNull
Created April 25, 2016 20:42
Show Gist options
  • Save MonkeyIsNull/afd0c270da25a31c822f65646cdfc1e3 to your computer and use it in GitHub Desktop.
Save MonkeyIsNull/afd0c270da25a31c822f65646cdfc1e3 to your computer and use it in GitHub Desktop.
defmodule Catstore do
def start() do
{:ok, store} = Agent.start(fn -> ["Biggles"] end)
store
end
def pr_cats(cats) do
Enum.each(cats, fn cat -> IO.puts cat end)
end
def show_cats(store) do
Agent.get(store, fn(cats) -> pr_cats(cats) end)
end
def seek_cat([],_) do
end
def seek_cat([h|t], which_cat) do
cond do
h == which_cat ->
h
true ->
seek_cat(t, which_cat)
end
end
def find_cat(store, which_cat) do
Agent.get(store, fn(cats) -> seek_cat(cats, which_cat) end)
end
def add_cat(store, cat) do
Agent.update(store, fn(cats) -> [ cat | cats] end)
end
end
c = Catstore.start()
Catstore.show_cats(c)
Catstore.add_cat(c, "Lulu")
Catstore.show_cats(c)
w = Catstore.find_cat(c, "Lulu")
IO.puts "Cat #{w}"
no_cat = Catstore.find_cat(c, "Zany")
# Not one here
IO.puts "Cat #{no_cat}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment