В  Профессор Frisby представляет Composable Functional JavaScript был введен функтор идентичности:
const Box = x =>
({
map: f => Box(f(x)),
fold: f => f(x) // for testing
})
Я потратил большую часть функций дня на понимание и почему приведенный выше код JavaScript на самом деле является функтором идентификации. Поэтому я решил изменить его, чтобы получить "реальный" функтор, который не является функтором идентичности. Я придумал это:
const Endo = x =>
({
map: f => Endo(f(x).split('')),
fold: f => f(x).split('') // for testing
})
Мое рассуждение состоит в том, что с Box, Id_Box: Box -> Box
и Id_Box f = f
. Endo также будет отображаться для себя, но Endo(f): Endo(x) -> Endo(y)
(if f: x -> y
).
Я на правильном пути?
EDIT:
Заменили string
на более общий x
, как это было в исходных примерах.