как-то так, да. объект класса, в который контекст как-то вложен (как не уточняется). ещё operator() перегружен на нём. технически это то что в плюсовом суржике принято называть "функтором", хотя к функторам из теории категорий конечно это отношения не имеет.
в хаскеле нету такого разделения. оно есть в каком-нить ди или там сишарпе где можно промаркировать чистую функцию как чистую с минимальными последствиями или вовсе без них. в хаскеле есть только функции, которые могут быть незаконными из-за всяких лупхолов типа ансейфперфррм или ансейф коэрс, но первые неотличимы от вторых средствами языка
можно. когда для дотнета делали прувер типа ликвид хаскеля во времена второй-третьей версии завели соотвествующий атрибут и промаркировали библиотечный код некоторый
Ну всё, у меня в голове теперь любой такой ответ трансформируется в "зависит от обстоятельств", так что считаю, что это "it depends", завернутый в монаду "it depends". Надо делать join...