- 1
- 2
- 3
- 4
$a = true;
$b = $a xor true;
var_dump($b);
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+167
$a = true;
$b = $a xor true;
var_dump($b);
ПЫХОПРОБЛЕМЫ
http://ideone.com/cRMQor
bool(true)
Оператор xor имеет более низкий приоритет, чем присваивание. Сначала выполняется $b = $a, затем результат (true) ксорится с true и результат нигде не используется.
Вот почему я всегда говорю о разумной минимализации числа значков и операторов в языке (любом), считая их синтаксическим сахаром?
Сделали бы функцию, никто бы не умер:
$b = xor ($a,true);
Инфиксная нотация наглядна, её ещё в школе изучают.
Возможно, надо было ограничить количество приоритетов.
>or(A, or(B, or(C, or(D, E))))
Неосилятор вараргов детектед.
> long_expression or very_long_expression and another_long_expression or true
Выглядит как дерьмо, я из принципа расставлю в таком коде скобки, мне проще сделать так чем помнить приоритеты в каждом отдельно взятом говноязыке.
И то верно.
А если заменить f(питух) на f.питух или вовсе оставлять пробел как в хаскеле, наступит всеобщее счастье. Будут AST, построенные только на инфиксной питушне. Симметрия и гармония.
Кстати, надо именно f.x, но ни в коем случае не пайпоподобное (или ООП-стиль) x.f, иначе будут проблемы. Скажем, придётся списки тоже задом наперёд писать. И аргументы функций при их определении.
>>>Вот почему я всегда говорю о разумной минимализации числа значков и операторов
>или вовсе оставлять пробел как в хаскеле, наступит всеобщее счастье
Вы так гойворите будто в хацкеле ничего не пишут и не читают задом наперёд.
Зато гармонично.
Иначе будет либо туда-сюда ездящее x.map(f(y,z))
Либо питушня. Вот, скажем, хотим мы запилить функцию curry, у нас есть точка как оператор применения функции и стрелка для лямбд.
Во втором примере придётся либо страдать, либо задавать лямбды как \y x -> y.x.f и писать уже в аргументах задом наперёд. Либо для n-арных функций писать первым n-ый аргумент, превратив работу с каррированными функциями в странное месиво: (x,y).f и y.x.f в одной программе!
Я говорю как оставаясь в рамках пхп легко и просто решить проблему, не плодя лишних сущностей, и тут же в тред немедленно врывается функциональная мразота, которая начинает утверждать - ВСЁ ЭТО ГОВНО, НАДО БЫЛО СДЕЛАТЬ ВМЕСТО ПХП ХАЦКЕЛЬ. Хуиррирование, частиное гавнирование, залупирование, конченый синтаксис.
Ну вот нормально, да?
Блять, ну извините меня, если бы вместо ПХП сделали хаскель, то сейчас бы пхпшники сидели бы без работы где-то рядом с хацкелистами, а люди бы придумали другой промышленный язык, который мы бы сейчас обсуждали на сайте, написанном на этом языке. Неужели это не очевидно. ХАЦКЕЛЬ НЕ НУЖЕН.
ассемблер (гармония):
op1
op2
op3
op4
op5
ЯВУ (говно):
op1.op5(op4(op2, op3));
op1; op4(op2, op3); op5;
op1; op4(op3, op2); op5; - не важно, когда вычислять аргументы
Хаскель (гармония):
op5 . op4 op2 op3 $ op1
op5 . op4 op3 op2 $ op1 - не важно, когда вычислять аргументы
op1.op5(op4(op2, op3));
op1; op4(op2, op3); op5;
op1; op4(op3, op2); op5; - не важно, когда вычислять аргументы
Это просто потому что люди ленвые и экономят строчки.
op0=op4(op2, op3)
op1.op5(op0)
op1()
op4(op2, op3)
op5()
op1()
op4(op3, op2)
op5()
Гармония уровня ассемблера.
И да, точки с запятой - дерьмо для любителей лепить в одну строку.
op1
op4(op2, op3)
op5
Всё равно говно, op2 и op3 стоят после op4.
Тут надо записывать всё наоборот и вызывать функции так: (op2, op3)op4. Если не пилить петуширование, можно даже op2 сделать первым аргументом, а не как в том моём сообщении.
Тгда да, в императивном коде для гармоничности достаточно f(x,y) заменить на (x,y)f.
Или это сношение мозга ради сношения мозга?
node.js и похожие асинхронные либы (libuv) по сути предоставляют cps-интерфейс.
А про корутины я второй раз слышу, слово красивое
www.youtube.com/watch?v=dJ-NA86bYQ4
есть такая штука yield, вместо return. оно тогда запоминает точку выхода и при следующем вызове уже из неё идёт дальше.
чсх в отличии от остального сахара, который форсят, эту фичу так просто не реализуешь, ибо это функция/процедура/метод+стейт в виде точки выхода.
Логично, что я об них почти ниче не знаю - я их никогда не юзал.
node.js
А потом пойти дальше, и вообще избавиться от скобочек. Получив forth с его джвумя стеками.
Ну так берите форт с постфиксной нотацией вообще без скобок.
> гармония
Ты блат почитать его попробуй с сохранением общей семантики порограммы, умник, блат
от
?
И какую в итоге проблему решает?
Если надо вводить либо временную переменную, либо пилить скобки?
Впрочем да, неидеальное говно выходит с иногда-скобками, хоть и чаще читается легче, чем симметричные варианты "скобки везде" и "скобок нет" (с операторами "=" и ",").
пхп и хаскель это "иногда-скобки"
но, в основном, . $ и прочая непонятная пижня
Жквери и в хаскель пролезло...
Ну там они вообще пидорасы. Зачем-то добавили сишкоблядские операторы, хотя SQL ну совсем никакого отношения к си не имеет...
Хе-хе. Я тоже так думал: http://govnokod.ru/13032
> по стандарту
- Папа, а стандарт SQL существует?
- Нет сынок, это фантастика.
> PHP
> PHP
Go, Johnny, go! Go!
Go, Johnny, go! Go!
Go, Johnny, go! Go! Johnny Back End!
Rajesh Front End
Abdul PM
1 XOR 1 = 10 и уж никак не 0
Ну а 10 это ниразу не False в битовом представлении, даже в С++
Следовательно, все ваши пробшлемы - это проблемы с пониманием работы PHP
Давай сделаем вид, что ничего не было и ты пойдешь делать уроки и никогда больше сюда не вернешься, а я взамен не скажу твоей мамке, что ты сидишь на сайтах для взрослых дядь
Ясно.
по модулю 2.
Их просто надрочили что XOR и сложение - одно и тоже, и там и там плюс. А вот момент что оно по модулю 2 почему-то упускают.
⊕1, к ним, похоже, пришел на собеседование математик, который знает, что такое поле, кольцо и идеал, а они его упустили.