Какие хорошие примеры использования «привязки» в clojure?

Я понимаю, что форма привязка позволяет повторно привязывать динамическую область видимости в clojure. До сих пор я видел, что он использовался только для ввода-вывода, например, с print , где * out * - это возврат к любому писателю, который вы хотели бы в то время.

Я хотел бы увидеть примеры, которые действительно используют преимущества связывания , когда другие возможности действительно не работают. Лично я использовал его только в тех случаях, когда передача объекта, предоставленного пользователем, всем функциям была действительно утомительной. В основном это ситуация, когда я пытаюсь создать контекст, который использует вспомогательные функции. (Подобно этому случаю Когда следует использовать идиому Temporary-rebind-a-special-var в Clojure? ) Чтобы быть более конкретным, я полагался на то, что пользователь создаст динамическую привязку к * db * var, чтобы позволить функциям базы данных знать, над чем работать. Это было особенно полезно, когда пользователю нужно написать много вложенных вызовов функций базы данных. Обычно я в порядке, если мне нужно писать макросы, чтобы упростить себе жизнь, но требовать от пользователя этого кажется плохим. При этом я стараюсь по возможности избегать этого.

Какие еще хорошие варианты использования «привязки» я могу скопировать и включить в свой код?

11
задан Community 23 May 2017 в 11:47
поделиться