Насколько я знаю (я не эксперт), принципы SOLID ничего не говорят о состоянии. Они должны быть применимы также и к функциональным языкам программирования. Они больше советов о том, как достичь модульности.
Некоторые из них довольно очевидны или, по крайней мере, хорошо известны. Единственная ответственность - это принцип UNIX «делай одно и делай это хорошо», который еще более популярен в функциональных языках, где «составление» широко используется аналогичным образом. Принцип сегрегации интерфейса также очень естественен (пусть ваши интерфейсы являются модульными и разделяют ортогональные концепции). Наконец, Dependency Inversion - это просто название «абстракции» и вездесущий в функциональном программировании.
Принципы "OL", Open / Closed и LSP, больше ориентированы на языки, основанные на наследовании в качестве основной концепции разработки программного обеспечения. Значения / модули функциональных языков по умолчанию не имеют открытой рекурсии, поэтому «наследование реализации» используется только в очень специфических случаях. Композиция является предпочтительной. Я не уверен, как вы должны интерпретировать принцип Open / Closed в этой ситуации. Вы можете подумать, что речь идет об инкапсуляции, которую также часто используют функциональные программы, используя абстрактные типы и тому подобное.
Наконец, может показаться, что принцип замещения Лискова связан с наследованием. Функциональные языки не всегда используют подтипы, но когда они это делают, действительно предполагается, что «производные типы» должны сохранять спецификацию «базовых типов». Функциональные программисты, конечно, стараются задавать и уважать интерфейс и свойства своих программ, модулей и т. Д. И могут использовать алгебраические рассуждения (это эквивалентно этому, поэтому я могу заменить ...) на основе этих спецификаций при программировании, рефакторинге, и т. д. Однако, как только вы избавитесь от идеи «наследования по умолчанию», у вас станет намного меньше проблем с нарушениями интерфейса, поэтому LSP не выделяется как жизненно важная гарантия, как в ООП.