Мой вопрос возник при чтении учебника Functors, Applicatives, And Monads In Pictures и его JavaScript version.Monad "unboxing"
Когда текст говорит о том, что functor разворачивает значение из контекста, я понимаю, что происходит трансформация Just 5
->5
. Согласно What does the "Just" syntax mean in Haskell?, Just «определено в области» для монады Maybe
.
Мой вопрос в том, что так волшебно относится ко всей разворачивающейся вещи? Я имею в виду, в чем проблема наличия некоторого языкового правила, которое автоматически разворачивает «скопированные» переменные? Мне кажется, что это действие - это просто поиск в какой-то таблице, где символ Just 5
соответствует целому числу 5
.
Мой вопрос основан на версии JavaScript, где Just 5
является экземпляром экземпляра прототипа. Так что разворачивание - это вообще не ракетостроение.
Является ли это причиной «для вычисления» причины или для «программиста»? Почему мы различаем Just 5
от 5
на уровне программирования?