Ưu điểm của macro vệ sinh không phải là một trong khả năng ngôn ngữ - bạn có thể viết các macro có vệ sinh tốt bằng cách sử dụng gensym
và trích dẫn cẩn thận / không trích dẫn vào đúng thời điểm. Tuy nhiên, macro vệ sinh đảm bảo macro của bạn có vệ sinh tốt. Về mặt đó, nó hơi giống như kiểm tra kiểu.
Cũng có thể có những lợi thế về công cụ cho các macro vệ sinh. Hầu hết các hệ thống macro hợp vệ sinh áp đặt các kiểm soát chặt chẽ về những gì macro của bạn làm và cách thực hiện (ví dụ: bạn không thể thực thi mã tùy ý khi macro được xác định bởi Scheme syntax-case
được mở rộng). Điều này có thể giúp viết các chương trình "hiểu" macro của bạn dễ dàng hơn và có thể cung cấp hỗ trợ công cụ bổ sung.
Mặt khác, có một số trường hợp macro không hợp vệ sinh có thể hữu ích. Ví dụ: nếu bạn thực sự muốn nắm bắt một ràng buộc cho một biến cụ thể (ví dụ: macro anaphoric ) thì tôi nghĩ bạn sẽ không gặp may nếu bạn chỉ có macro vệ sinh.