سوال در مورد اضافه شدن یک ماکرو به زبان الکسیر و تاثیر آن بر روی کرنل

درود خدمت دوستان گرامی . در به روز رسانی های اخیر الکسیر ماکرویی به نام ‍defguard‍ اضافه شد فکر کنم برای ساخت گارد سفارشی در الکسیر

مثال

defmodule SizeTranslator do

  defguard is_small(size) when size == 1 or size == "s" or size == "S"

  defguard is_medium(size) when size == 2 or size == "m" or size == "M"

  defguard is_large(size) when size == 3 or size == "l" or size == "L"

end

من کد هاشو تقریبا در سورس الکسیر مشاهده کردم . برام سوالی پیش اومده . تقریبا متوجه این موضوع شدم که امکانی به نام ماکرو نویسی در الکسیر استفاده شده و یک قالبی درست شده مثلا به عنوان `defguard . در حقیقت چیزی به الکسیر اضافه نشده بلکه مثل یک پلاگ می مونه که اتفاقا قبلا یکی از اعضای توسعه دهنده الکسیر داشت اون رو توسعه می داد و از ماکرو ها در الکسیر استفاده کرده .

سوال خلاصه کنم : آیا واقعا به هسته چیز خاصی اضافه شده یا فقط از چیزی که وجود داشته استفاده شده ؟

منابع :


https://hexdocs.pm/elixir/Kernel.html#defguard/1

https://hexdocs.pm/elixir/master/Kernel.html#defguardp/1

ماکروها یکی از اساسی‌ترین قابلیت‌ها الکسیر هستن، چون زبان می‌تونه با کمکش گسترش پیدا کنه. حتی پایه‌ای‌ترین قسمت‌های الکسیر مثل if و def با ماکرو ساخته شدن، برای همینه که گفته میشه اکثر الکسیر با خود الکسیر نوشته شده. بنابراین بله، defguard به هسته اضافه شده، با استفاده از قابلیتی که از قبل وجود داشته، یعنی ماکرو.
توی این ویدئو توضیح داده میشه که ماکروها چطور کار می‌کنن:

ممنون از شما ولی سوال برای دو سال پیشه. ولی تشکر از اینکه مطلب رو کامل کردید.