Відносини.
Друг: Враховуючи двох людей, стосунки з друзями дотримуються цих загальних законів
- Майте добру волю один до одного
- Думає, що один до одного є для них другом (тому закони повинні виконувати обидва члени в цьому стосунку)
- Насолоджується проводити час один з одним
Моноїд: Враховуючи кілька елементів і функцію, яка займає 2 пункти і повертає 1, моноїдальне співвідношення слідує цим загальним законам
- Є один із цих елементів (лише один, званий ідентичність), який перейшов до функції з будь-яким іншим елементом, забезпечить функцію завжди повертає інший елемент (0 + 1 = 1, таким чином 0 - тотожність, коли елементи є числами і функція є доповненням)
- Функція не може працювати або повертати предмети, не в тому наборі, з яким вона має моноїдний зв'язок
- Функція асоціативна і може використовуватися з елементами дещо незалежним чином, це означає a (b * c) = (a * b) * c, що говорить, що ви можете помножити a на результат b * c або c в результаті a * b і результат буде таким самим, що ви зробите першим.
Функціональне програмування стосується узагальнень, друг - це дуже загальне співвідношення, яке можна побачити у численних сценаріях, але у всіх різних форматах воно, як правило, відповідає вищезазначеним законам.
Визнаючи закони, що регулюють відносини між речами, ви можете створити загальні реалізації, які працюють на будь-якому форматі речей, що мають такий тип відносин. У функціональному програмуванні ви намагаєтеся визначити взаємозв'язки між речами, щоб їх можна було класифікувати та трактувати загалом.
Ви хочете метафору з реального світу? Подивіться, як пов’язані речі, і спробуйте визначити загальні закони (як це стосується багатьох сценаріїв, коли речі, окрім законів, можуть відрізнятися). Існує зв'язок між реєстратором і покупцем у магазині, у ньому є деякі загальні закони, розроблено програмне забезпечення для полегшення цілей людей у цих загальних стосунках у спосіб POS-систем. Аналогічно, коли ви починаєте бачити ці загальні закони, що диктують, як пов'язані між собою речі, ви можете почати покладатися на закони цих відносин у написанні свого програмного забезпечення, а не на конкретні деталі примірника відносин.