---
id: core
requestedLanguage: en
descriptionLanguage: en
---

# Functional Core, Imperative Shell

- Type: architectural approach
- Group: Design
- Placement: Design / Model and boundaries
- [Source](<https://www.destroyallsoftware.com/screencasts/catalog/functional-core-imperative-shell>)

[HTML](https://dpm.cnonim.name/practices/core/)

Pure computations form the core; input, output, and side effects stay in the shell.

## Relationships

- can be combined with: [Hexagonal Architecture / Ports and Adapters](/practices/hex/en.md) (combination)
- facilitates: [Unit Testing](/practices/unit/en.md) (support)

[Show on the map](https://dpm.cnonim.name/#practice=core&lang=en)
