Skip to content

Instantly share code, notes, and snippets.

@josevalim
Created August 17, 2014 12:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save josevalim/46616dfdb0fce03a9b56 to your computer and use it in GitHub Desktop.
Save josevalim/46616dfdb0fce03a9b56 to your computer and use it in GitHub Desktop.
defmodule Parsec do
# Handles parsec for ..., do: ...
defmacro parsec({:for, _, args}) do
{exprs, [[do: return]]} = Enum.split(args, -1)
do_parsec(exprs, return)
end
# Handles parsec for ... do ... end
defmacro parsec({:for, _, args}, do: return) do
do_parsec(args, return)
end
defp do_parsec(exprs, return) do
IO.inspect {exprs, return}
end
end
defmodule Run do
import Parsec
parsec for 1 < 2, do: :ok
parsec for 1 < 2 do
:ok
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment