История изменений
Исправление quasimoto, (текущая версия) :
Эта функция чистая
Чистая функция по определению возвращает одни и те же значения при одних и тех же аргументах — твоя l
возвращает разные при одном и том же b
, значит она не чистая. Её можно очистить если передавать контекст явно (State monad, etc.) — b
одно и то же, но контекст (окружение) разное, так что результаты разные, всё чисто, никаких проблем.
Так же можно очистить всё что угодно (ST, IO, Par, etc. monads) — все функции чистые, просто в остальных языках это не так (не возвращают там функции одно и то же при одинаковых результатах).
З.Ы.
Нормальные пацаны
http://dlang.org/function.html
http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html
http://lwn.net/Articles/285332
http://llvm.org/releases/2.2/docs/ReleaseNotes.html
http://llvm.org/releases/2.4/docs/ReleaseNotes.html
http://pimiddy.wordpress.com/2012/04/20/pure-functions-in-cc
Исходная версия quasimoto, :
Эта функция чистая
Чистая функция по определению возвращает одни и те же значения при одних и тех же аргументах — твоя l
возвращает разные при одном и том же b
, значит она не чистая. Её можно очистить если передавать контекст явно (State monad, etc.) — b
одно и то же, но контекст (окружение) разное, так что результаты разные, всё чисто, никаких проблем.
Так же можно очистить всё что угодно (ST, IO, Par, etc. monads) — все функции чистые, просто в остальных языках это не так (не возвращают там функции одно и то же при одинаковых результатах).
З.Ы.
Нормальные пацаны
http://dlang.org/function.html
http://gcc.gnu.org/onlinedocs/gcc/Function-Attributes.html
http://lwn.net/Articles/285332
http://pimiddy.wordpress.com/2012/04/20/pure-functions-in-cc