В main
я могу прочитать мой файл конфигурации и поставить его как runReader (somefunc) myEnv
просто отлично. Но somefunc
не нуждается в доступе к myEnv
, который поставляется читателем, и следующей цепочке в цепочке. Функция, которая нуждается в чем-то из myEnv, является крошечной функцией листа.
Как получить доступ к среде в функции без пометки всех промежуточных функций как (Reader Env)
? Это не может быть правильно, потому что иначе вы просто передадите myEnv в первую очередь. И передача неиспользуемых параметров через несколько уровней функций просто уродливая (не так ли?).
Есть множество примеров, которые я могу найти в сети, но все они, похоже, имеют только один уровень между runReader и доступом к среде.
Я принимаю Криса Тейлора, потому что он самый тщательный, и я вижу, что он полезен другим. Спасибо тоже Heatsink, который был единственным, кто пытался прямо ответить на мой вопрос.
Для тестового приложения, о котором идет речь, я, возможно, просто полностью разорву читателя и передам окружение. Он ничего мне не покупает.
Я должен сказать, что меня все еще озадачивает мысль о том, что предоставление статических данных для функции h изменяет не только ее сигнатуру типа, но и функцию g, которая вызывает ее, и f, которая вызывает g. Все это, несмотря на то, что фактические типы и вычисления не изменяются. Похоже, что детали реализации протекают по всему коду без реальной выгоды.