---
# System prepended metadata

title: ありけんのHackMD Book
tags: [Book]

---

---
title: ありけんのHackMD Book
tags: Book
---

いろちのHackMD総合
===
- [ホーム]

卒業研究
---
- [ホーム](/FqbabPTEQZWcoOBFfYEdYQ?view)
- [Introduction](/mz2lAsHOT-qhp8-iRzgcjw?view)
- [Example](/6u9DEOjVSoS-Cos9tT-pxw?view)
- [main](/ONLDrIqeQbuGg875BDU5Ow?view)

プレゼン用資料
---

- [マクロとは](/381Aca4_RDOshAxIGIh25w?view)
- [マクロとは(スライド版)](/@ariken-family/Hy8Ehe4St#/)
- [Sample](/MzPOZyDPTxCxTe-ntZsKZw?view)


The Racket Guide
---
- [16 マクロ](/e-USrwrzTkCvEJhxqOZJyg?view)
- [16-1 パターンベースのマクロ](/_F0kpBDORRyB5K1TWszGGg?view)
- [16-2 一般的なマクロトランスフォーマ](/emywOhQeTCOl8BneenyfVQ#162-%E4%B8%80%E8%88%AC%E7%9A%84%E3%81%AA%E3%83%9E%E3%82%AF%E3%83%AD%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B9%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%BC?view)
- * [16.2.1 構文オブジェクト](https://hackmd.io/PnldatcwRTKHhcpWum5bBg#1621-%E6%A7%8B%E6%96%87%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88?view)
- * [16.2.2 マクロトランスフォーマ手続き](https://hackmd.io/1lLwBBBIR6C0wpRuqZtOtw?view)
- * [16.2.3 パターンと表現の混在：syntax-case](https://hackmd.io/AVXmTZ3fRKGcvTnASidqyQ#1623-%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E3%81%A8%E8%A1%A8%E7%8F%BE%E3%81%AE%E6%B7%B7%E5%9C%A8%EF%BC%9Asyntax-case?view)
- * [16.2.4 with-syntaxとgenerate-temporaries](https://hackmd.io/DIzp79gETviwu1oC1xiqOg#1624-with-syntax%E3%81%A8generate-temporaries)
- * [16.2.5 コンパイルとランタイムの段階](https://hackmd.io/wRUrzYlXROilIxXRmY6ucg#1625-%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB%E3%81%A8%E3%83%A9%E3%83%B3%E3%82%BF%E3%82%A4%E3%83%A0%E3%81%AE%E6%AE%B5%E9%9A%8E)
- * [16.2.6 一般的なフェーズレベル](https://hackmd.io/kkYlJHOyQ8C1ncqfI60KJQ#1626-%E4%B8%80%E8%88%AC%E7%9A%84%E3%81%AA%E3%83%95%E3%82%A7%E3%83%BC%E3%82%BA%E3%83%AC%E3%83%99%E3%83%AB)
-      * [16.2.6.1 フェーズとバインディング](https://hackmd.io/kkYlJHOyQ8C1ncqfI60KJQ#16261-%E3%83%95%E3%82%A7%E3%83%BC%E3%82%BA%E3%81%A8%E3%83%90%E3%82%A4%E3%83%B3%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0)
-      * [16.2.6.2 フェーズとモジュール](https://hackmd.io/kkYlJHOyQ8C1ncqfI60KJQ#16262-%E3%83%95%E3%82%A7%E3%83%BC%E3%82%BA%E3%81%A8%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB)
- * [16.2.7 コードインスペクタと構文汚染](https://hackmd.io/YwkWRz5zRVSloSQTJ5qxFw#1627-%E3%82%B3%E3%83%BC%E3%83%89%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%9A%E3%82%AF%E3%82%BF%E3%81%A8%E6%A7%8B%E6%96%87%E3%81%AE%E4%B9%B1%E3%82%8C)
    * [16.2.7.1 マクロの結果に対するsyntax-protectの使用](https://hackmd.io/YwkWRz5zRVSloSQTJ5qxFw#16271-%E3%83%9E%E3%82%AF%E3%83%AD%E3%81%AE%E7%B5%90%E6%9E%9C%E3%81%AB%E5%AF%BE%E3%81%99%E3%82%8Bsyntax-protect%E3%81%AE%E4%BD%BF%E7%94%A8)
    * [16.2.7.2 染色モード](https://hackmd.io/YwkWRz5zRVSloSQTJ5qxFw#16272-%E6%9F%93%E8%89%B2%E3%83%A2%E3%83%BC%E3%83%89)
    * [16.2.7.3 汚れとコードインスペクタ](https://hackmd.io/YwkWRz5zRVSloSQTJ5qxFw#16273-%E6%B1%9A%E3%82%8C%E3%81%A8%E3%82%B3%E3%83%BC%E3%83%89%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%9A%E3%82%AF%E3%82%BF)
    * [16.2.7.4 保護されたエクスポート](https://hackmd.io/YwkWRz5zRVSloSQTJ5qxFw#16274-%E4%BF%9D%E8%AD%B7%E3%81%95%E3%82%8C%E3%81%9F%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%88)
- [16.3 モジュールのインスタンス化と訪問](https://hackmd.io/Tw7CnxsYQ0SadNkRjqspuw#163-%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E5%8C%96%E3%81%A8%E8%A8%AA%E5%95%8F)
- * [16.3.1 宣言とインスタンス化](https://hackmd.io/Tw7CnxsYQ0SadNkRjqspuw#1631-%E5%AE%A3%E8%A8%80%E3%81%A8%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E5%8C%96)
- * [16.3.2 コンパイルタイムでのインスタンス化](https://hackmd.io/Tw7CnxsYQ0SadNkRjqspuw#1632-%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB%E6%99%82%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E5%8C%96)
- * [16.3.3 モジュールの訪問](https://hackmd.io/Tw7CnxsYQ0SadNkRjqspuw#1633-%E8%A8%AA%E5%95%8F%E3%81%99%E3%82%8B%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB)
- * [16.3.4 利用可能なモジュールを介したレイジービジット](https://hackmd.io/Tw7CnxsYQ0SadNkRjqspuw#1634-%E5%88%A9%E7%94%A8%E5%8F%AF%E8%83%BD%E3%81%AA%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%82%92%E7%B5%8C%E7%94%B1%E3%81%97%E3%81%9F%E9%81%85%E5%BB%B6%E8%A8%AA%E5%95%8F)

Fear of Macros
---

* [1 はじめに](https://hackmd.io/rRfacGHSTWKOLiErxhY-fw?view)

* [2 私たちの進攻計画](https://hackmd.io/CciUmfpTTr6mBAx_84giOQ?view)

* [3 変形!](https://hackmd.io/xLxLlckORtSxKWclYNtJ0Q?view)
    * [3.1 シンタックストランスフォーマーとは？](https://hackmd.io/xLxLlckORtSxKWclYNtJ0Q?both#31-%E3%82%B7%E3%83%B3%E3%82%BF%E3%83%83%E3%82%AF%E3%82%B9%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B9%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%BC%E3%81%A8%E3%81%AF%EF%BC%9F)
    * [3.2 入力とは何でしょう？](https://hackmd.io/xLxLlckORtSxKWclYNtJ0Q?both#32-%E5%85%A5%E5%8A%9B%E3%81%A8%E3%81%AF%EF%BC%9F)
    * [3.3 入力を実際に変換する](https://hackmd.io/xLxLlckORtSxKWclYNtJ0Q?both#33-%E5%85%A5%E5%8A%9B%E3%82%92%E5%AE%9F%E9%9A%9B%E3%81%AB%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B)
    * [3.4 コンパイル時とランタイム時の比較](https://hackmd.io/xLxLlckORtSxKWclYNtJ0Q?both#34-%E3%82%B3%E3%83%B3%E3%83%91%E3%82%A4%E3%83%AB%E6%99%82%E3%81%A8%E3%83%A9%E3%83%B3%E3%82%BF%E3%82%A4%E3%83%A0%E6%99%82%E3%81%AE%E6%AF%94%E8%BC%83)
    * [3.5 シンタックスのための開始](https://hackmd.io/xLxLlckORtSxKWclYNtJ0Q?both#35-for-syntax%E3%81%AE%E9%96%8B%E5%A7%8B)

* [4 パターンマッチング: syntax-case と syntax-rules](https://hackmd.io/Nk0tT1F8St2-iu07-mqllA?view)
    * [4.1 パターン変数とテンプレートの戦い](https://hackmd.io/Nk0tT1F8St2-iu07-mqllA?view#41-%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E5%A4%89%E6%95%B0%E3%81%A8%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88%E3%81%AE%E6%88%A6%E3%81%84)
    * [4.1.1 with-syntax](https://hackmd.io/Nk0tT1F8St2-iu07-mqllA?view#411-with-syntax)
    * [4.1.2 with-syntax*（ウィズシンタックス](https://hackmd.io/Nk0tT1F8St2-iu07-mqllA?view#412-with-syntax)
    * [4.1.3 format-id](https://hackmd.io/Nk0tT1F8St2-iu07-mqllA?view#413-format-id)
    * [4.1.4 別の例](https://hackmd.io/Nk0tT1F8St2-iu07-mqllA?view#414-%E5%88%A5%E3%81%AE%E4%BE%8B)
    * [4.2 独自の構造体を作る](https://hackmd.io/Nk0tT1F8St2-iu07-mqllA?view#42-%E7%8B%AC%E8%87%AA%E3%81%AE%E6%A7%8B%E9%80%A0%E4%BD%93%E3%82%92%E4%BD%9C%E3%82%8B)
    * [4.3 ドット記法を使ったハッシュの入れ子検索](https://hackmd.io/Nk0tT1F8St2-iu07-mqllA?view#43-%E5%85%A5%E3%82%8C%E5%AD%90%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%9F%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E6%A4%9C%E7%B4%A2%E3%81%AB%E3%83%89%E3%83%83%E3%83%88%E8%A8%98%E6%B3%95%E3%82%92%E4%BD%BF%E3%81%86)

* [5 構文パラメータ](https://hackmd.io/Hi_rX5oZTLKILvCF-QL6Lw?view)

* [6 splicing-letは何のために存在するのか？](https://hackmd.io/VlVQKufDTLy0jraU2UFusQ?view)

* [7 堅牢なマクロ：syntax-parse](https://hackmd.io/sCt8NNyTTc6XyPrCCaMIPw?view)

    * [7.1 関数のエラー処理方法](https://hackmd.io/sCt8NNyTTc6XyPrCCaMIPw?view#71-%E9%96%A2%E6%95%B0%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC%E5%87%A6%E7%90%86%E6%88%A6%E7%95%A5)
    * [7.2 マクロのエラー処理戦略](https://hackmd.io/sCt8NNyTTc6XyPrCCaMIPw?view#72-%E3%83%9E%E3%82%AF%E3%83%AD%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC%E5%87%A6%E7%90%86%E6%88%A6%E7%95%A5)
    * [7.3 syntax-parseの使い方](https://hackmd.io/sCt8NNyTTc6XyPrCCaMIPw?view#73-syntax-parse%E3%81%AE%E4%BD%BF%E7%94%A8)

* [8 参考文献と謝辞](https://hackmd.io/4HqQUdbNT6KJbyLxYf80WQ?view)

---
