- 1
list($ignore, $ignore, $ignore, $ignore,$ignore, $ignore, $radius, $ignore) = get_location_data($request['location']);
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+123
list($ignore, $ignore, $ignore, $ignore,$ignore, $ignore, $radius, $ignore) = get_location_data($request['location']);
<?
$filter = array(
'ignore', 'ignore', 'ignore', 'ignore','ignore', 'ignore', 'radius', 'ignore'
);
for($i = 0 ; $i < count($filter); $i++){
$result = get_location_data($request['location']);
if ($filter[$i] === 'radius'){
$radius = $result[$i];
}
}
(чем народ постоянно пользуется для stat()а который тоже возвращает лист.)
было бы странно если бы в питоне подобного было нельзя.
radius, _, length, _, _ = get_some_data()
А в PHP до 5.4 парсер не мог осилить два типа скобок в одном выражении: http://www.phpsadness.com/sad/21
К слову, в PHP до какой-то версии нельзя было "брать индекс" у произвольного выражения. Только у переменных.
а. да. тогда почти книжный пример:
с другой стороны, в общем случае сам стат нужен бывает редко (что честно говоря и напрягает в те редкие моменты), потому существуют `-X` операторы.
пример который я привел именно и есть случай который на `-X` операторах сделать нельзя. лучше пример был бы проверка rwx флагов:
ЗЫ но stat() все равно пахнет, потому что mtime/atime/ctime доступны только с точностью до секунд.
А на деле вроде как операционки могут огрублять их хоть до суток, в зависимости от ФС... Плюс на линухе atime'а у меня вообще отключены, чтобы диск не дрочить.
большинство новых ФС умеют. Granularity: FAT - 10ms, NTFS - 100ns, zfs, xfs, btrfs, ext4 - 1ns.
"Плюс на линухе atime'а у меня вообще отключены, чтобы диск не дрочить."
врешь. на линухе по умолчанию включен relatime - atime обновляется когда mtime меняется.
atime редко бывает нужен. но пару раз помогало - доказать/показать глупым юзверям какой конфиг файл на самом деле читается.
А еще там (походу даже при включенном noatime?): In addition, since Linux 2.6.30, the file's last access time is always updated if it is more than 1 day old.
"noatime" в общем случае пользоватся нельзя. правильная опция - "relatime" (relative access time).
фишка что если приложения которые проверяют atime (например бэкапы) то могут и возникают проблемы на уровне логики. например файл был модифицирован вчера, а atime - год назад. back to the future какой-то получается.
relatime это почти тоже самое что и noatime, но при модификации файла также обновляется и atime.
Может я что-то не так понимаю?
read-only операции меняют только atime (причем, при включенном relatime, только если oldatime <= ctime || oldatime <= mtime, т.е. максимум 1 раз после каждого изменения файла).
write-only операции меняют ctime + mtime.
read-write операции меняют все три таймштампа.
chmod, mv и прочие операции не трогающие контент меняют только ctime.
Сейчас проверял свое понимание на strictatime, relatime, noatime - вроде сходится. И тогда я не понимаю, чем noatime может повредить бекапилкам. Ну не узнают они, что я файл читал с момента последней модификации, и что с того?
уже не помню, честно говоря. если интересно, можешь поковырять LKML - Linux была первой кто ввела relatime (потому что нишевые пользователи все еще могут влиять на разработку).
PS плоды гугления ничего конкретного не говорят (помимо "совместимость с POSIX"):
http://docs.fedoraproject.org/en-US/Fedora/18/html/Power_Management_Guide/Relatime.html
и самый прикол что оказывается relatime вроде как уже включена по умолчанию:
http://unix.stackexchange.com/questions/17844/when-was-relatime-made-the-default
хотя на LWN больше написано:
http://lwn.net/Articles/244829/
и tmpwatch (про которую я слышу в первый раз) вроде есть основной пользователь atime.
> и самый прикол что оказывается relatime вроде как уже включена по умолчанию
Ну это очень разумное решение, по сравнению с дискодрочильным strictatime. А после того как Линус предложил патч на "last access time is always updated if it is more than 1 day old" эти метки даже можно юзать.
А вот с запятыми все сложнее - такой синтаксис уже используется:
можно даже
Either a b
P.S. Either не совсем монада.
ОК, не монада, структура такая. Не посмотрел в справку. Но все равно это не множественные значения. Уже хотя бы потому, что все эти объекты имеют какой-то тип, которым можно манипулировать через наследование (т.е. подменить настоящее содержание чем-то другим).
Это плохо? Если число возвращаемых аргументов неизвестно (sic!), можно возвращать список.
> тип, которым можно манипулировать через наследование
К счастью, Хаскель не поддерживает наследование.
Каскель не поддерживает наследование? Та ну? А как же deriving?
deriving не имеет никакого отнешения к наследованию. Это указание компилятору вывести инстансы тайпклассов для определяемого типа. Это можно сделать и руками, но зачем писать самоочевидный код, если это может сделать компилятор.
Тайпклассы тоже никоим образом не связаны с наследованием. Они определяет протоколы, которым могут удовлетворять типы, нечто вроде интерфейсов. Тип не может наследоваться от тайпкласса или другого типа. Можно только определять "инстансы" - описания, как тип X удовлетворяет протоколу A.
Типы ничего не знают о протоколах, реализация протокола никак не может повлиять на сам тип. Нельзя унаследоваться и переопределить поведение в наследнике.
Это принципиально отличается от того, что используется в ООП-языках: там тип знает, от каких интерфейсов он "унаследован". В хаскеле ничего подобного нет. Можно взять тип X программиста Васи, протокол Y программиста Пети, и установить соответствие между ними, не меняя изменяя исходного кода Васи и Пети.
> функция с известным ему именем применима к чему-то и дает какой-то определенный тип результатов, будучи примененной
К наследованию это никак не относится. Это называется полиморфизм.
Интерфейс I — тип. Класс A, реализующий интерфейс I — тоже тип. Переменная типа A всегда будет иметь ещё и тип I. Класс B, наследующий класс C — тоже тип. Переменная типа C будет иметь также типы B и I. В таком случае ещё говорят, что A будет подтипом I, а B — подтипом A.
Класс типов в хацкеле — НЕ тип. Поэтому реализация типом некоторого класса — НЕ насладование. instance Show MyType не делает тип MyType наследником типа Show, потому что Show — не тип. А deriving вообще что-то вроде макроса.
Мета-типов в языке никаких нет, это чьи-то фантазии. Функции в C++ не наследуются; перегрузка — это вообще другой вид полиморфизма (ad-hoc, а в наследовании — подтиповый). «Равенство» в C++ ничего не определяет и никаких гарантий не даёт, это не агда какая-нибудь.
1. Вернуть фиксированное кол-во однородных значений (точка в пространстве, частное и остаток). Кортеж отлично с этим справляется, заодно утверждая, сколько именно значений должно вернуться и каких они типов.
2. Возврат результата и кода ошибки. Either в этом случае гораздо лучше.
В контексте того, что в топике, я предпочту , нежели
Вы можете привести примеры адекватного и удобного использования множественного возврата? Или реальные сложности, возникающие при использовании кортежей? Зачем вставлять в язык возможности, которые легко заменяются более простыми и удобными средствами? Мной движет лишь бритва Оккама, а не ограниченность.
В Forth большинство "функций" (слов) возвращают больше одного значения, например. Банально строки передаются от функции к функции как два значения: указатель на выделеную память и длина строки.
Ну это конкретное решение конкретного языка. Непонятно, почему это должно быть лучше или изящнее, чем передача типа "строка", скрывающего в себе детали реализации. То, что так сделано в Forth, ещё не значит, что этот подход чем-то лучше.
Я говорю, что в Forth большинство функций возвращают больше одного значения, и привожу в качестве аргумента ситуацию, которая встречается очень часто (ни одна даже самая тривиальная программа ее не избежит). Но в ответ я вижу "да это единичный случай". Может стоит все-таки взять и прочитать аргумент перед тем, как отвечать?
Так точно, сэр. Я просил:
>> примеры адекватного и удобного использования множественного возврата? Или реальные сложности, возникающие при использовании кортежей?
Ответ:
> в Forth большинство функций возвращают больше одного значения
Ну и что с того? Это удобнее или безопаснее, чем нормальные типы и кортежи? Почему? Это даёт хороший выигрыш в производительности?
Пока что я вижу только такую цепь рассуждений:
я охуенен, я осилил форт
-> форт охуенен (ведь говно я бы осиливать не стал)
-> форт использует множественный возврат
-> множественный возврат охуенен
Почему кортежи плохо - я уже объяснил. Потому что формализм функций плохо подходит к программированию в целом, если его ограничивать только функциями. Это порочное извращение действительности привитое дефективными языками типа Каскеля. В программировании есть процедуры, а не функции. А кортежи - это попытка через жопу сымитировать то, что на базисном уровне было зачем-то запрещено в пределах дефективного языка.
Это две части одной сущности ;) Друг без друга они практически бесполезны. Поэтому концептуально эти функции возвращают одно значение (хотя технически два).
Можно другой пример?
Но тут откуда ни возьмись появляется всезнающий разум, который говорит, что это значение на самом деле одно, и что черное это просто очень темное белое, а мокрое это такая крайняя разновидность сухого и т.д.
> Можно другой пример?
Все операции работающие со стеком принимают по нескольку аргументов и возвращают столько же / или даже больше значений.
Вот только не надо экстраполировать их на другие языки... Эти операции за пределами форта вообще не имеют никакого смысла, т.к. в других языках нет такой встроенной сущности как data-stack.
А если считать data-stack обычной глобальной структурой данных, то, внезапно, форт слова вообще ничего не возвращают и вообще ничего не принимают. Тот же эффект можно получить и в сишке:
Такой вид рассуждений был описан Грайсом как "разговорная импликатура", т.е. когда из утверждения выбирается не то, что утверждалось, а какой-то аспект, который тоже мог бы быть истинным, буде изначальное утверждение истинным. Ну и дальнейшие махинации со смыслом утверждения не следующего явно из изначального утверждения в дальнейшем подаются за обоснование / опровержение первого.
Ну так надо приводить яркий и наглядный пример, с которым оппонент не сможет поспорить... А не эту фигню про адрес и длину.
P.S. Тот же /mod был бы куда более ярким примером.
С другой стороны, имеем яркий пример, не просто экзотической случай, а несколько не связаных друг с другом языков в которых кроме функций есть процедуры (лучше описаные как отношения), для которых функции являются их подклассом.
И тем не менее, в качестве контраргумента приводятся языки в которых почему-то решили пойти по пути обозначеном вышеупомянутым мудаком.
Чтобы опровергнуть предыдущее утверждение не нужно искать ущербный язык в котором что-то не реализовано, или реализовано плохо. Нужно показать, что описаная выше ситуация не случается никогда.
откуда тебе знать
> После выполнения миров не становиться N+1
Да и GC же. На старый мир ссылок нет, поэтому он удаляется.
Каждая прога содержится в мире, который ей передали на вход ;) Поэтому прога может посмотреть в свой аргумент, и увидеть, что делают остальные.
С точки зрения одной проги других прог,
других машин, и даже пользователей просто не существует. Они есть только в ее воображении (в аргументе world).
это уже не функциональщина
Почему? Чистые функции имеют полное право смотреть на свои аргументы и возвращать их измененные копии ;)
Вот только сказать по входным значениям что в это время с ними делают остальные нельзя
Входные значения - мир, а в мире содержатся остальные.
ОМГ, я начал себе представлять наш фрактальный мир.
Если отказаться от квантования, можно вместить в мир ещё сколь угодное количество его копий.
Ну а вычислять поведение остальных можно с какой-то точностью, не учитывая, что другие думают о нас.
Есть ещё спорное утверждение:
К тому же, наш результат в силу нашей функциональной чистоты должен зависеть от мира, но не от наших хаотичных раздумий о нём, следовательно можно утверждать, что другие, не имея возможности просчитать эту рекурсию, не смогут дать результат, основанный на вычислении наших намерений. А потому, можно не погружаться в рекурсию, чтобы узнать, что они делают.
/thread
Вот тут есть на это ответ: http://govnokod.ru/13938#comment200374
Земля притягивает Солнце, изменяя его положение, которое зависит от положения Земли, которое изменяется из-за притяжения Солнца, которое зависит от положения Земли. Но в реальности всё работает.
Операционный усилитель с ООС работает.
И fix $ const f работает, а не уходит в бесконечную рекурсию.
Так почему же программы должны не работать?
С уважением, Ваш кэп.
> С уважением, Ваш кэп.
Солипсизм третьей степени.
Притяжение солнца к земле и земли к солнцу это как бы одно и тоже притяжение
> Операционный усилитель с ООС работает.
не путаем физику и программирование.
> Так почему же программы должны не работать?
напиши, скомпиль да запусти.
А раздумья одной программы о других программах и их раздумья обо всех остальных - это всего лишь часть одного и того же процесса преобразования мира. Мир меняется, программы работает, значит их зависимость разрешается так же просто, как зависимость Солнца и Земли.
> не путаем физику и программирование
Путаница только в том, что нельзя создать программу, которая на 100% скопирует физический объект. Пока - из-за большого количества атомов, потом - из-за каких-нибудь ограничений квантовой физики.
А так - берём большой кусок мира, содержащий физический объект, применяем к нему функцию "физика", преобразующую мир в новый мир по найденным учёными законам - результатом этого будет мир после того, как объект что-то сделал. С нужной точностью.
я все еще не уверен, кто же из вас больше туп: ты или кенган
)
p/s/ я не говорю, что я умнее вас. Возможно, мы братья по тупостиразуму
> я все еще не уверен, кто же из вас больше туп: ты или кенган
Ты так говоришь, как-будто это разные притяжения :) Эта сила действует на оба тела одинаково. Просто у солнца масса больше, поэтому оно получает меньшее ускорение, чем земля.
Я догадывался...
Выходит, не только kegdan и 1024-- - один и тот же юзер, эти два товарища - на самом деле - bormand?
Ура, я - bormand, пойду расскажу об этом Кутузову и Наполеону, а то они меня Гитлером считали, окаянные.
kegdan спокойно может группировать плохие явления в одно хорошее (как программист, он может группировать модули с циклическими зависимостями в общий модуль без оных).
Кстати, всё началось, когда bormand сгруппировал формальные аргументы нечистой функции с остальным миром, сотворив чистую функцию.
>я все еще не уверен, кто же из вас больше туп: ты или кенган
Учебником физики тебя по голове, неуч
Стертор, хоть и тролль, но дело говорит.
Аксиомы никто не доказывал, вся наука - вера в аксиомы и правила следования.
мир не меняется. Это основа фунциональщины.
>Путаница только в том, что нельзя создать программу, которая на 100% скопирует физический объект. Пока - из-за большого количества атомов, потом - из-за каких-нибудь ограничений квантовой физики.
А так - берём большой кусок мира, содержащий физический объект, применяем к нему функцию "физика", преобразующую мир в новый мир по найденным учёными законам - результатом этого будет мир после того, как объект что-то сделал. С нужной точностью.
Вот только в реальности все процессы стремятся к минимуму потенциальной энергии, а в программировании тупая рекурсия может не закончиться никогда.
Да вы же сверху обсуждали... Мир не меняется, просто создаётся новая копия, а старую забирает GC, что мы в своей речи называем "мир меняется".
Всё "мир меняется" можно заменить на "к миру применили чистую функцию "физика" и получили новый мир".
> а в программировании тупая рекурсия может не закончиться никогда.
Можно либо подогнать функцию, которая заменит рекурсию на её отсутствие (как в случае с притяжением), либо использовать функцию, которая даст нам результат с какой-то точностью (быть может, на уровне "много"-"мало"; но если другие программы будут тоже думать о нашей в терминах "много"-"мало", мы не проиграем и не упустим самой сути)
мир меняется
World.state = new State()
мир создается
World newWorld = new World()
Тут как не меняй понятия, а мир все рано не меняется. Создается на основе старого - да, но не меняется.
> которая заменит рекурсию на её отсутствие
чито я не поняль?
>которая даст нам результат с какой-то точностью
с некоторой точностью сказать, что сейчас делает другая функция?)
Я не меняю понятия, нарушая функциональную чистоту программы.
f1 (изменившийся мир) == (f1 . физика) (старый мир)
> Тут как не меняй понятия, а мир все рано не меняется.
Я и не говорю об обратном.
> чито я не поняль?
Можно считать, что положение Земли r - это функция f от положения Солнца, которое - функция F от положения Земли.
r = f(F(f(F(f(F(...(R)...)))))), а можно послушать kegdanа, понять, что это одно и то же явление, и взять функцию, которая сразу даёт нужный результат.
> с некоторой точностью сказать, что сейчас делает другая функция?)
"Другая функция сейчас выполняет свою работу." Я сказал, что делает другая функция, пользуясь нулевым приближением. Используя исходники функции (они есть в аргументе "мир") и проверив, исполняет ли её сейчас какой-то компьютер, можно ещё что-нибудь полезное сказать.
f1 (изменившийся мир) == (f1 . физика) (старый мир)
Ну так преобразований происходит много и одновременно какой из становиться новый, какие в мусорку?
> Можно считать, что положение Земли r - это функция f от положения Солнца, которое - функция F от положения Земли.
Мне кажется это пример хреновой аналитики
Вводим оба два тела.
let SunPosition, EarthPosition = RecalculatePositon Sun Earth Time
>>> которая заменит рекурсию на её отсутствие
>>чито я не поняль?
Я все равно не понял что значит заменить рекурсию на ее отсутствия. по - русски, пожалуйста
>"Другая функция сейчас выполняет свою работу."
Не факт. Мы могли просто запустить одну из многих функций. Остальные могут сейчас ничего не делать. А из функции проверить это все равно нельзя
Можно рассматривать только течение времени. Считать, что в каждый новый момент возникает новое состояние мира, которое зависит только от предыдущего состояния мира. Предыдущее (более старое состояние по времени) выбрасывать.
Исполнение программы привязывать к двум состояниям - когда программа начала исполняться и когда закончила. Кажется, что программа изменила мир, или породила новый, а на самом деле просто мир перешёл в новое состояние под действием некоторой чистой функции.
> Мне кажется это пример хреновой аналитики
Тогда я скажу, что http://govnokod.ru/13938#comment200367 - пример хреновой аналитики, поскольку там рекурсия выдута из того же пальца.
И я уже говорил про свой аналог RecalculatePositon - это функция "физика".
> Я все равно не понял, что значит заменить рекурсию на ее отсутствие. по-русски, пожалуйста
"подогнать функцию, которая заменит рекурсию на её отсутствие" -> найти такую новую функцию, которая не будет рекурсивной в отличие от старой - рекурсивной и потому плохой.
Т.е. от F(f(F(f(... перейти к RecalculatePositon; от факториала перейти к формуле Стирлинга и т.п.
> Остальные могут сейчас ничего не делать. А из функции проверить это все равно нельзя
Получив мир на вход, можно считать из памяти нужного компьютера данные, относящиеся к нужной функции и сказать, на какой стадии исполнения находится функция.
Если лень просчитывать, в каждый новый момент можно читать новое состояние мира и смотреть, что делает интересующая нас функция.
Исполнение программы привязывать к двум состояниям - когда программа начала исполняться и когда закончила. Кажется, что программа изменила мир, или породила новый, а на самом деле просто мир перешёл в новое состояние под действием некоторой чистой функции.
это совершенно другая ситуация
>Получив мир на вход, можно считать из памяти нужного компьютера данные, относящиеся к нужной функции и сказать, на какой стадии исполнения находится функция.
не в функциональном программировании
в функциональном программировании кто-то запрещает читать аргументы функции? повесить его.
А читать в какой-то новый момент времени тоже можно, поскольку во-первых, это новое состояние появилось после применения чистой функции, а во-вторых, даже если бы оно так не появилось, никого бы не волновало, что мы делаем со своим аргументом внутри.
> это совершенно другая ситуация
Значит, эти две ситуации эквивалентны.
аргумент один. мир
>это новое состояние появилось после применения чистой функции
при последовательном запуске - пожалуйста. при паралельном - нет. Функция не меняет мир, повторяю, она новый создает. Менять и фунциональщина несовместимы
>> это совершенно другая ситуация
>Значит, эти две ситуации эквивалентны.
вот это логика
Мир меняется (или пересоздаётся - не важно) сам, две параллельно работающие функции получают свой конкретный результат только потому, что так совпало, поскольку миру было угодно измениться в такую сторону. Если бы функции запустили последовательно, их результат был бы другим, но они всё ещё чистые, поскольку до этого их аргумент (мир) был другим.
> Менять и фунциональщина несовместимы
Мы тут говорили о чистых функциях, локальные вкрапления императивности и присваивания не всегда нарушают чистоту.
Иначе бы теорема Борманда об императивных программах была сразу отвергнута нами, поскольку в императивных программах меняют много, люто и бешено.
>>> это совершенно другая ситуация
>> Значит, эти две ситуации эквивалентны.
> вот это логика
Ну а какая была ситуация "та", которая не другая? По-моему, у нас по-прежнему есть мир и есть запущенные программы. Ни про что другое я не говорил.
Рекурсивное описание притяжения Солнца и Земли эквивалентно описанию через RecalculatePositon, эквивалентно гигантскому набору уравнений, описывающему каждую молекулу и их взаимодействие.
Аналогично, рекурсивная теория Кегдана эквивалентна аксиоме о стадийных переходах мира.
Важно. Очень важно
>две параллельно работающие функции получают свой конкретный результат только потому, что так совпало, поскольку миру было угодно измениться в такую сторону.
Иисус его изменил что ли?)
> Если бы функции запустили последовательно, их результат был бы другим, но они всё ещё чистые, поскольку до этого их аргумент (мир) был другим.
Давайте встанем в круг. Видение задачи изложите
>локальные вкрапления императивности и присваивания не всегда нарушают чистоту.
Как и черный цвет кожи не мешает быть арийцем
> Иначе бы теорема Борманда об императивных программах была сразу отвергнута нами, поскольку в императивных программах меняют много, люто и бешено.
Ля теорема? Приведите
>Ну а какая была ситуация "та", которая не другая? По-моему, у нас по-прежнему есть мир и есть запущенные программы. Ни про что другое я не говорил.
Рекурсивное описание притяжения Солнца и Земли эквивалентно описанию через RecalculatePositon, эквивалентно гигантскому набору уравнений, описывающему каждую молекулу и их взаимодействие.
где то в этом месте младенец Иисус плачет
Повторяю - давайте встанем в круг
Хотя если честно мне надоело. Но из принципа могу продолжить
>Важно. Очень важно
Нельзя различить изменение мира и его пересоздание. Потому и важность сомнительна.
(Если поверить в независимые итерации мира, всё становится проще.)
> Иисус его изменил что ли?)
Мир изменился сам, его изменил Иисус, или мир изменился под действием 100500 компьютеров, вычисляющих функции - эквивалентные объяснения.
Мир был одним, а стал другим. Потому, что был в одном состоянии, а перешёл в другое.
> Давайте встанем в круг. Видение задачи изложите
> Ля теорема? Приведите
Теорема: "Императивная программа принимает на вход мир, и возвращает его измененным. Поэтому она функционально чиста."
Наша задача - обсудить теорему. Есть мир, есть функции, которые исполняются где-то и магическим образом получают мир в качестве аргумента, функции возвращают какой-то новый или изменённый мир.
>Как и черный цвет кожи не мешает быть арийцем
Эта функция - не чистая? Почему?
> где то в этом месте младенец Иисус плачет
Почему же плачет? Мы строим рекурсивные формулы описания явления, основываясь на научных фактах. Эти формулы полностью описывают явление.
Далее мы строим другие формулы, которые тоже основываются на научных фактах и тоже полностью описывают явление. Поскольку каждый набор формул полностью описывает явление, можно считать эти наборы эквивалентными, если наука - не чушь.
> Хотя если честно мне надоело. Но из принципа могу продолжить
И мне надоело. Но в споре рождаются истина и лулзы.
для опровержения достаточно привести программу, которая при одинаковом входе предоставляет разный выход. В этом контексте даже банальный вывод времени не чисто функционален
>Эта функция - не чистая? Почему?
function cube(x){
var y = 1;
for(var i=0; i<3; ++i) y *= x;
return y;
}
зависит от контекста. Чистая, если Y на каждом шаге скрывает предыдущее значение, а не изменяет его
Сайд-эффектов у этой функции нет, результат зависит только от аргумент x. Значит эта функция чиста. А то, что она внутри себя y и i меняет - это никого не волнует. Ибо чистота определяется интерфейсом, а не реализацией.
Ну да. У меня и на сишке очень многие функции чистые. Просто потому что так удобней поддерживать/тестировать :)
Это первое что подкупает в функциональщине)
Ну и распараллеливание без лишней мороки)
Сейчас большенство языков позволяют писать функциональных код. Начал изучать фунциональшину и удивился сколько из этого я уже использовал в императивных языках
На компьютере идут часы, откуда программа берёт время для вывода. Этого аргумента достаточно для функциональной чистоты, даже мир передавать не надо.
Я думаю, искать антипример, который удовлетворит всех, надо в области квантовой физики. Предлагать какой-нибудь источник случайных чисел.
В этом случае оппонентам надо будет как минимум знать квантовую физику (что значительно снижает их количество), а единственный аргумент "учёные просто не осознали физику процесса, потому назвали его случайным" ересью попахивает.
Времени нет ;) Есть только причинно-следственные связи между событиями.
> Вот человек, который меня понимает) Точнее - мою проблему)
Надо было меньше на ГК сидеть :)
с уважением, Ваш кэп
Через 10 это будет гоатсе. Через 20 это будет компилятор, питух и строка существующая в разных измерениях и представляющая различные состояния одного и того же кванта, как пацаны выше обсуждали.
Мигающее, с красным анусом.
$radius = func()[$n]; // PHP 5.4<