Отношения.
Друг: Учитывая двух человек, дружеские отношения следуют этим общим законам
- Имейте добрую волю друг к другу
- Думает, что друг друг для них друг (поэтому законы должны соблюдаться обоими участниками в этих отношениях)
- Любит проводить время друг с другом
Моноид: учитывая несколько элементов и функцию, которая принимает 2 элемента и возвращает 1, моноидальное отношение следует этим общим законам
- Существует один из этих элементов (только один, называемый идентификатором), который передается функции с любым другим элементом, гарантирует, что функция всегда возвращает другой элемент (0 + 1 = 1, таким образом, 0 - это идентификатор, когда элементы являются числами и функция сложение)
- Функция не может работать или возвращать элементы, не входящие в набор, с которым она имеет моноидальное отношение
- Функция является ассоциативной и может использоваться с элементами в некотором порядке, не зависящем от порядка, это означает a * (b * c) = (a * b) * c, что говорит о том, что вы можете умножить a на результат b * c или c в результате a * b и результат будет таким же, что вы делаете в первую очередь.
Функциональное программирование - это все обобщения, друг - это очень общие отношения, которые можно увидеть в многочисленных сценариях, но во всех различных форматах, как правило, они следуют приведенным выше законам.
Признавая законы, которые регулируют отношения между вещами, вы можете создавать общие реализации, которые работают с любым форматом вещей, которые имеют такие отношения. В функциональном программировании вы пытаетесь определить отношения между вещами, чтобы их можно было классифицировать и рассматривать в целом.
Вы хотите метафору из реального мира? Посмотрите, как все взаимосвязано, и попытайтесь определить общие законы (как это применимо к нескольким сценариям, где вещи, отличные от законов, могут отличаться). Существует связь между служащим регистратуры и покупателем в магазине, у него есть некоторые общие законы, программное обеспечение было разработано для облегчения целей людей в этих общих отношениях на пути систем POS. Точно так же, когда вы начинаете видеть эти общие законы, определяющие, как все связано, вы можете начать полагаться на законы этих отношений при написании своего программного обеспечения, а не на конкретные особенности экземпляра отношений.