Функтор нужен чтоб ты мог применять чистые функции к данным в разных контейнерах, если б не было функтора, то пришлось бы в своих чистых функциях работать уже не с данными, а с обёрткой, тем самым функция перестает быть чистой, и уже не сможет работать с другими обертками, так как в ней уже будет захордкоженно например мейби