Những ngôn ngữ nào có macro vệ sinh?
Macro vệ sinh là những macro mà việc mở rộng của chúng đảm bảo không gây nên việc bắt giữ định danh một cách tình cờ. Chúng là đặc điểm của các ngôn ngữ lập trình như Scheme, Dylan, Rust, Nim và Julia. Vấn đề chung về việc bắt giữ tình cờ đã được biết đến trong cộng đồng Lisp trước khi các macro vệ sinh được giới thiệu. Những người viết macro sẽ sử dụng các tính năng của ngôn ngữ tạo ra các định danh duy nhất (ví dụ: gensym) hoặc sử dụng các định danh bị làm méo để tránh vấn đề này. Macro vệ sinh là một giải pháp lập trình cho vấn đề bắt giữ được tích hợp vào chính bộ mở rộng macro. Thuật ngữ "vệ sinh" được đặt ra trong bài báo năm 1986 của Kohlbecker và các cộng sự, trong đó giới thiệu mở rộng macro vệ sinh, được lấy cảm hứng từ thuật ngữ được sử dụng trong toán học.
Một số ngôn ngữ có macro vệ sinh bao gồm Scheme, Dylan, Rust, Nim và Julia.