Я все еще изучаю эту инопланетную функциональную парадигму...
Как бы я написал следующий код на Clojure и функционально? предположим, что эти отсутствующие части определены в другом месте и ведут себя так, как описано в комментариях. Вот он на Python, с которым я знаком.
usernames = []
# just the usernames of all the connections I want to open.
cancelfunctions = {}
# this global contains anonymous functions to cancel connections, keyed by username
def cancelAll():
for cancel in cancelfunctions.values():
cancel()
def reopenAll():
cancelfunctions = {}
for name in usernames:
# should return a function to close the connection and put it in the dict.
cancelfunctions[name] = openConnection()
Все, что мне действительно нужно знать, это как создать новый список обратных вызовов, как в функции reopenAll, но я включаю сюда еще немного контекста, потому что есть вероятность, что я совершаю какое-то злодеяние функциональной парадигмы, и вы, скорее всего, скорее всего хотят исправить всю программу.:)