Comments 37
а сферические кони в вакууме так и вообще идеальны…
Хотим еще про D! Больше и разного!
Почему не оформите в виде «перевода»?
Артём, если ты в Москве, посмотри анонс встречи программистов. Приходи рассказать про D.
Это в статье (переводе?) ошибочка.
Разумеется, если в D функция отмечена pure, то пользоваться глобальными переменными не получится. :)
Разумеется, если в D функция отмечена pure, то пользоваться глобальными переменными не получится. :)
А в чем именно ошибка?
Получится, если они imutable.
ну не любая, а, ещё раз повторюсь, imutable. что даёт уверенность в том, что её значение останется неизменным.
Да ладно, а если функции имеет дело с геометрией и активно используют число pi, то прикажете 3.14 забивать в тело каждой функции? Кажется общепринято порицать copy-paste.
Ну как всегда две стороны одной медали. Одно дело когда immutable переменные являются стойкими, и, например, относятся к константам из какой-либо науки. Другое дело, когда её объявил коллега. Допустим это BUFFER_SIZE. И захотел в какое-то время поставить ей слишком высокое занчание — получаем возможность «Out of memory». Или слишком низкое — получаем возможность падения производительности. Или, что ещё хуже, таймауты по пути следования данных.
О! Pi не зависит от постоянной Планка?
Глобальные переменные можно использовать, если они imutable.
Интересный теоритический материал. Заинтересовал данный язык, однако информации немного по нему. Буду рад, если вы, а также другие хабрапользователи, будете снабжать читателей новыми статьями. ;)
Автор, исправь ошибку в самом начале поста:
Точнее Чистые функЦии (сам ошибся указывая на чужую ошибку)
Не совсем понимаю как в первая функция запрещает изменение содержимого передаваемого массива. То есть const int[] a предохраняет изменение массива (или только ссылки на него?) в контексте функции, но не за ее пределами. Поэтому при асинхронном выполнений возникнет несоответствие «concurrent array modification».
Вообще передача ссылочных типов в «чистые» функции нарушает их изолированность от контекста выполнения. Единственный вариант сохранения изоляции — это делать глубокие unmodified копии передаваемых объектов. Иначе, для пущей чистоты, придется запретить ссылки.
Вообще передача ссылочных типов в «чистые» функции нарушает их изолированность от контекста выполнения. Единственный вариант сохранения изоляции — это делать глубокие unmodified копии передаваемых объектов. Иначе, для пущей чистоты, придется запретить ссылки.
Могут быть чистые методы? Или достаточно const-методов?
Sign up to leave a comment.
Чистые функции