---
# System prepended metadata

title: section1
tags: [macro]

---

---

title: section1
tags: macro

---

### 1 はじめに

私がRacketを学んだのは、25年間ほとんどCとC++を使ってきた後でした。

その結果、いくつかの精神的なむち打ち症になりました。

「括弧ばかり」というのは、実は大したことではありませんでした。むしろ、最初に頭を悩ませたのは関数型プログラミングでした。ほどなく、私はそれを理解し、Racket の他の多くの側面や機能を快適かつ効果的に使えるようになりました。

しかし、2 つの最後のフロンティアが残っていました。マクロと継続です。

シンプルなマクロは簡単で理解しやすく、良いチュートリアルもたくさんありました。しかし、日常的なパターン マッチングを超えた瞬間、私は崖から用語集の中に落ちてしまったようなものでした。何度も読み直せば理解できるだろうと思って、ひたすら資料に目を通しました。何が起こっているのか明確なメンタルモデルを持たずに、試行錯誤している自分がいました。がーん。

霧の中から少しずつ形が見えてきたところで書き始めています。

> [訂正、批判、苦情など、何かありましたら、ぜひ教えてください。]

私の第一の動機は利己的です。何かを説明することで、より深く学ぼうという気持ちになります。また、私が間違いを書いても、他の人がそれを指摘して訂正してくれるでしょう。これは、メタプログラミングの社会工学的なバリエーションでしょうか？次の質問をどうぞ :)

最後に、私と似たようなバックグラウンドや学習スタイルを持つ他の人々の助けになればと思います。

Racketのマクロ機能が、問題や悩みに対する解決策としてどのように進化してきたかを示したいのです。私は、すでに持っている質問に対する答えを発見したり、すでに感じている問題に対する解決策を見つけたりすると、より早く、より深く学ぶことができます。ですから、最初に質問や問題を提示して、その答えや解決策をよりよく理解してもらえるようにします。

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

* [top menu](https://hackmd.io/2BTooD3wSEiqaR1dQ7vKEA?view)