The term Design Designs is overloaded and confused.
There is a narrow way to think about it: mainly as a collective name for the concepts of TOE listed in the GoF book, for example, Singleton, Facade, Strategy. You probably use this definition if you put design patterns as a competency on your resume.
One project can contain dozens of singleton objects. Obviously, this template is advantageous in that it is encoded as an abstract abstraction, for example, as a macro or abstract class. Similarly for many other patterns in the GoF book.
It seems to me that Paul Graham's thesis is this: design patterns, which are standard ways of repeating yourself, should be codified as realistic abstractions, and as a result you should use a language that has a very flexible way of defining realistic abstraction.
But the concept is more general - I think it distorts design patterns. Christopher Alexander invented this concept to apply it to the design of countries, cities, cities and houses. Game developers have languages such as Fog-of-War, Asymmetrical-Abilities, etc.
In this general sense, it becomes much less obvious that design patterns should be encoded as abstract abstractions.
If you have not read A Pattern Language, view the scope here . Imagine something like this for the software world. GoF samples will be at the bottom of the bottom of the ToC: these are implementation details.
What other patterns could you find above them?
I think that in one chapter there would be templates related to the game. It can include both game design templates and implementation methods - and I argue that this is not a clear distinction, such as Game Loop, World Entity, spatial hash, map height landscape, etc. These are all design patterns.
Now, as part of a single game project, you are likely to have only one World Entity implementation. Anyone who works in any language would make sense to make this World Entity object a realistic abstraction, like a base class.
But what the template describes is how this abstraction is formed: it contains some idea of the position, is visualized, etc. It is unclear whether this design pattern will benefit from coding as a macro or an abstract class in itself - the pattern already describes an abstraction! Would you make a metaclass for realizing the entities of the world? A macro to define classes of world entities with all kinds of unholy parameters?
Looking further at the imaginary content, we see that these patterns are subject to a more general scheme - the game. Is it worth it to code as a macro or an abstract class? May be. But not obvious. We are talking about a gaming infrastructure where you define a computer game by passing parameters, filling in the blanks, etc. It can be productive and fun, but it is not the only way to do something.
Erlang platform has realistic abstractions for templates, as general as a server, which is great. And I assume that the Erlang project has as many servers as the Java project has Singletons.
But for your specific purposes, if you work in Lisp or Haskell or something else and write a server, sometimes it’s enough to just follow the Server template, implementing it as good old functions and objects, without trying to make a real abstraction of all this.
All design patterns are not low-level text patterns in the source code.