В этой статье моноиды функций представлены с кодом C # и типом Haskell определение.
Функция
a -> b
является моноидом, еслиb
является моноидом. Это означает, что вы можете комбинировать две функции одного типа. В объектно-ориентированном контексте это означает, что вы можете объединить два метода с одинаковой сигнатурой в один метод, если возвращаемый тип представляет собой моноид.Обобщение
Хотя приведенный выше код C # является только примером, общее правило состоит в том, что любая функция, возвращающая моноид, сама является моноидом. В Haskell это правило сформулировано в стандартной библиотеке:
instance Monoid b => Monoid (a -> b)
Это означает, что для любого моноида
b
функцияa -> b
также (автоматически) является моноидом.
Проблема в том, что пример на C # слишком конкретен в отношении «GUID», и я понятия не имею, что автор пытается сделать в коде, а определение типа Haskell - это просто определение типа.
Каков пример кода в JavaScript для реализации этой функции-моноида?
Combine
, которую вы сможете перевести в javascript даже без каких-либо знаний C #.CountPrimes
иCountLetters
используются просто как примеры функций, которые будут использоваться в качестве аргументов дляCombine
. - person Bergi   schedule 22.03.2019