## Adapter (Обертка)

Паттерн Адаптер наиболее часто применяется к «стандартной» единице абстракции в Java — классу. В [функциональных языках](/2%20ComputerScience/2.2%20Languages/2.2.2%20Paradigm/2.2.2.1%20Declarative/2.2.2.1.1%20FunctionalProgramming(FP).md) паттерн применяется к функциям. Паттерн берёт интерфейс и преобразует его в другой интерфейс, согласно определённым требованиям. Вот пример паттерна Адаптер:

```swift
int pow(int i, int j);

int square(int i)
{
    return pow(i, 2);
}
```

Этот код адаптирует интерфейс функции, возводящей число в произвольную степень, к интерфейсу функции, которая возводит число в квадрат. В аккадемических кругах этот простейший приём называется [каррирование](/2%20ComputerScience/2.2%20Languages/2.2.2%20Paradigm/2.2.2.1%20Declarative/2.2.2.1.1%20FunctionalProgramming(FP).md) (в честь специалиста по логике Хаскелла Карри ([Haskell](/2%20ComputerScience/2.2%20Languages/2.2.1%20TypesOfLanguages.md) Curry), который провёл ряд математических трюков, чтобы всё это формализовать).










