Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Насчет синтаксического сахара,
|> Enum.map(fn(x)-> String.to_integer(x) end)можно сократить до
|> Enum.map(&String.to_integer/1)iex> quote do 1 + 2 * 3
{:+, [context: Elixir, import: Kernel], [1, {:*, [context: Elixir, import: Kernel], [2, 3]}]}
iex> defmacro operation([var1, var2, var3], [op1, op2]) do
...> {op1, [context: Elixir, import: Kernel], [var1, {:op2, [context: Elixir, import: Kernel], [var2, var3]}]}
...> end
iex> m = ~w|+ - * /|a
[:+, :-, :*, :/]
iex> Comb.cartesian_product(m, m) |> Enum.map(&operation([var1, var2, var3], &1))
iex> defmacroУ меня и к Вам и к автору статьи вопрос: зачем вы путаете новичков? Они ведь не знают, что def и defmacro работают только внутри defmodule. Аналогичный косяк и с `quote do 1 + 2 * 3` без end.
https://github.com/tallakt/comb ⇐ комбинаторика.Вот за это, отдельная благодарность! Все мои проблемы решены в одном месте.
Занимательная задачка «Несчастливый билет» (Elixir edition)