
chriseyre2000
Exploring Graphs with Elixir: Chapter 3 is missing some macros
Exploring Graphs with Elixir by @tonyhammond
I am unsure if the book is intended to be worked through to recreate the library (which is great for learning things).
When the macros are first used it includes use for both Graph and Query.
So far only the Graph using has been defined, and then it only creates the read_graph and write_graph methods.
First Post!

mvellandi
In
p.96 – Ch 3 > Storing Graphs in the Graph Store > Using Macros
the code comment in graph.ex
quote do
# other (listings, new_graph) functions here
def read_graph...
def write_graph...
end
implies the author will define a few more functions later, or WE will add them on our own.
On the following page (97), we’re told we can check out the whole NativeGraph library functions:
iex> NativeGraph.[TAB]
...
which includes ALL the functions it will eventually output when ALL are defined in the using macros in both GraphCommons.Graph and GraphCommons.Query
The author just needs to update this code snippet to correspond with the next paragraph in the book.
Through the end of Ch 3, I see only two more functions used:
list_graphs
list_graphs_dir
which I started defining in the next subsection, where first used:
p.100 – Ch 3 > Storing Graphs in the Graph Store > Listing
NOTE: I just noticed the author didn’t include these two functions in the source code either.
Here’s what I additionally wrote in my GraphCommons.Graph using macro
quote do
def list_graphs(file_test \\ :exists?) do
GraphCommons.Graph.list_graphs(unquote(graph_type), file_test)
end
def list_graphs_dir(graph_dir) do
GraphCommons.Graph.list_graphs_dir(graph_dir, unquote(graph_type))
end
def read_graph...
def write_graph...
end
Popular Prag Prog topics










Other popular topics








Latest in PragProg
Latest (all)
Categories:
Popular Portals
- /elixir
- /rust
- /wasm
- /ruby
- /erlang
- /phoenix
- /keyboards
- /js
- /rails
- /python
- /security
- /go
- /swift
- /vim
- /clojure
- /java
- /haskell
- /emacs
- /svelte
- /onivim
- /typescript
- /crystal
- /c-plus-plus
- /tailwind
- /kotlin
- /gleam
- /react
- /flutter
- /elm
- /ocaml
- /vscode
- /opensuse
- /ash
- /centos
- /php
- /deepseek
- /html
- /zig
- /scala
- /debian
- /nixos
- /lisp
- /agda
- /react-native
- /textmate
- /sublime-text
- /kubuntu
- /arch-linux
- /ubuntu
- /revery
- /manjaro
- /django
- /spring
- /diversity
- /nodejs
- /lua
- /julia
- /c
- /slackware
- /neovim