Is it possible to define a module with a function as a one-liner?
I’m trying out iex and it would be nice (I think) to be able to do (something like this):
ex(6)> defmodule Test do world, do: “it works!” end
** (SyntaxError) iex:6: unexpected token: end
Is this possible with another syntax?
defmodule Test, do: def world, do: "it works!
5 Likes
I wasn’t even close… That works fine, thanks Christopher!
You can also do
defmodule Test do def world do "it works!" end end
My guess is that the problem arises when you mix the different ways of expressing do
, do ... end
and , do:
1 Like
NobbZ
5
By mixing keyword-styles, you are confusing the parser. By explicitly spreading some parens you can help it being back on the track:
iex(1)> defmodule Test do def world, [do: nil] end
{:module, Test, ...