lecture 05
This commit is contained in:
7 files changed
+175
No files matched your search
@@ -0,0 +1,32 @@
|
||||
defmodule M do
|
||||
def if_fun(predicate, do: do_block, else: else_block) do
|
||||
cond do
|
||||
predicate -> do_block
|
||||
true -> else_block
|
||||
end
|
||||
end
|
||||
|
||||
defmacro inspect(x) do
|
||||
IO.inspect(x)
|
||||
end
|
||||
|
||||
defmacro if_macro(predicate, do: do_block, else: else_block) do
|
||||
quote do
|
||||
cond do
|
||||
unquote(predicate) -> unquote(do_block)
|
||||
true -> unquote(else_block)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
defmacro while(condition, do: do_block) do
|
||||
quote do
|
||||
try do
|
||||
for _ <- Stream.cycle [:ok] do
|
||||
if unquote(condition), do: unquote(do_block),
|
||||
else: throw :break
|
||||
end
|
||||
catch :throw, :break -> :ok end
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in new issue
Block a user