- 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)
someone 17.03.2015 13:00 # +5
Оператор xor имеет более низкий приоритет, чем присваивание. Сначала выполняется $b = $a, затем результат (true) ксорится с true и результат нигде не используется.
3.14159265 17.03.2015 13:32 # 0
Вот почему я всегда говорю о разумной минимализации числа значков и операторов в языке (любом), считая их синтаксическим сахаром?
Сделали бы функцию, никто бы не умер:
$b = xor ($a,true);
1024-- 17.03.2015 14:10 # +4
Инфиксная нотация наглядна, её ещё в школе изучают.
Возможно, надо было ограничить количество приоритетов.
3.14159265 17.03.2015 14:17 # 0
>or(A, or(B, or(C, or(D, E))))
Неосилятор вараргов детектед.
Xom94ok 17.03.2015 15:00 # +2
3.14159265 17.03.2015 15:04 # +4
> long_expression or very_long_expression and another_long_expression or true
Выглядит как дерьмо, я из принципа расставлю в таком коде скобки, мне проще сделать так чем помнить приоритеты в каждом отдельно взятом говноязыке.
Xom94ok 17.03.2015 15:05 # 0
И то верно.
1024-- 17.03.2015 15:03 # +1
А если заменить f(питух) на f.питух или вовсе оставлять пробел как в хаскеле, наступит всеобщее счастье. Будут AST, построенные только на инфиксной питушне. Симметрия и гармония.
Кстати, надо именно f.x, но ни в коем случае не пайпоподобное (или ООП-стиль) x.f, иначе будут проблемы. Скажем, придётся списки тоже задом наперёд писать. И аргументы функций при их определении.
3.14159265 17.03.2015 15:07 # 0
>>>Вот почему я всегда говорю о разумной минимализации числа значков и операторов
>или вовсе оставлять пробел как в хаскеле, наступит всеобщее счастье
Вы так гойворите будто в хацкеле ничего не пишут и не читают задом наперёд.
1024-- 17.03.2015 15:23 # +1
Зато гармонично.
Иначе будет либо туда-сюда ездящее x.map(f(y,z))
Либо питушня. Вот, скажем, хотим мы запилить функцию curry, у нас есть точка как оператор применения функции и стрелка для лямбд.
Во втором примере придётся либо страдать, либо задавать лямбды как \y x -> y.x.f и писать уже в аргументах задом наперёд. Либо для n-арных функций писать первым n-ый аргумент, превратив работу с каррированными функциями в странное месиво: (x,y).f и y.x.f в одной программе!
3.14159265 17.03.2015 15:32 # +3
Я говорю как оставаясь в рамках пхп легко и просто решить проблему, не плодя лишних сущностей, и тут же в тред немедленно врывается функциональная мразота, которая начинает утверждать - ВСЁ ЭТО ГОВНО, НАДО БЫЛО СДЕЛАТЬ ВМЕСТО ПХП ХАЦКЕЛЬ. Хуиррирование, частиное гавнирование, залупирование, конченый синтаксис.
Ну вот нормально, да?
Блять, ну извините меня, если бы вместо ПХП сделали хаскель, то сейчас бы пхпшники сидели бы без работы где-то рядом с хацкелистами, а люди бы придумали другой промышленный язык, который мы бы сейчас обсуждали на сайте, написанном на этом языке. Неужели это не очевидно. ХАЦКЕЛЬ НЕ НУЖЕН.
1024-- 17.03.2015 15:37 # 0
ассемблер (гармония):
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 - не важно, когда вычислять аргументы
3.14159265 17.03.2015 15:39 # 0
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()
Гармония уровня ассемблера.
И да, точки с запятой - дерьмо для любителей лепить в одну строку.
1024-- 17.03.2015 15:46 # 0
op1
op4(op2, op3)
op5
Всё равно говно, op2 и op3 стоят после op4.
Тут надо записывать всё наоборот и вызывать функции так: (op2, op3)op4. Если не пилить петуширование, можно даже op2 сделать первым аргументом, а не как в том моём сообщении.
Тгда да, в императивном коде для гармоничности достаточно f(x,y) заменить на (x,y)f.
3.14159265 17.03.2015 18:42 # +1
bormand 17.03.2015 18:48 # 0
3.14159265 17.03.2015 18:53 # 0
kegdan 18.03.2015 08:10 # 0
Или это сношение мозга ради сношения мозга?
roman-kashitsyn 18.03.2015 09:34 # 0
kegdan 18.03.2015 10:18 # 0
roman-kashitsyn 18.03.2015 11:19 # 0
node.js и похожие асинхронные либы (libuv) по сути предоставляют cps-интерфейс.
roman-kashitsyn 18.03.2015 11:26 # +1
kegdan 18.03.2015 11:53 # 0
А про корутины я второй раз слышу, слово красивое
3.14159265 18.03.2015 15:50 # 0
www.youtube.com/watch?v=dJ-NA86bYQ4
kegdan 18.03.2015 15:51 # 0
3.14159265 18.03.2015 15:52 # 0
есть такая штука yield, вместо return. оно тогда запоминает точку выхода и при следующем вызове уже из неё идёт дальше.
чсх в отличии от остального сахара, который форсят, эту фичу так просто не реализуешь, ибо это функция/процедура/метод+стейт в виде точки выхода.
kegdan 18.03.2015 16:37 # 0
Логично, что я об них почти ниче не знаю - я их никогда не юзал.
bormand 18.03.2015 13:17 # 0
node.js
bormand 17.03.2015 18:51 # +3
А потом пойти дальше, и вообще избавиться от скобочек. Получив forth с его джвумя стеками.
3.14159265 17.03.2015 19:04 # +3
Ну так берите форт с постфиксной нотацией вообще без скобок.
bormand 17.03.2015 19:07 # +2
wvxvw 18.03.2015 09:21 # 0
bormand 18.03.2015 13:18 # +1
LispGovno 17.03.2015 19:12 # 0
> гармония
Ты блат почитать его попробуй с сохранением общей семантики порограммы, умник, блат
Abbath 18.03.2015 15:10 # 0
TarasB 18.03.2015 12:19 # 0
от
?
1024-- 18.03.2015 12:25 # 0
3.14159265 18.03.2015 15:49 # 0
И какую в итоге проблему решает?
Если надо вводить либо временную переменную, либо пилить скобки?
1024-- 18.03.2015 17:46 # 0
Впрочем да, неидеальное говно выходит с иногда-скобками, хоть и чаще читается легче, чем симметричные варианты "скобки везде" и "скобок нет" (с операторами "=" и ",").
3.14159265 18.03.2015 17:50 # +2
пхп и хаскель это "иногда-скобки"
kegdan 18.03.2015 19:52 # 0
но, в основном, . $ и прочая непонятная пижня
3.14159265 18.03.2015 21:11 # +2
bormand 18.03.2015 21:27 # +2
Жквери и в хаскель пролезло...
kegdan 18.03.2015 22:17 # +3
bormand 18.03.2015 22:21 # 0
kegdan 18.03.2015 22:24 # 0
Abbath 19.03.2015 00:25 # 0
wvxvw 18.03.2015 16:26 # 0
kegdan 17.03.2015 16:54 # 0
Abbath 18.03.2015 14:40 # 0
TarasB 18.03.2015 15:25 # 0
Abbath 18.03.2015 15:27 # 0
myaut 17.03.2015 14:35 # 0
bormand 17.03.2015 15:56 # +1
3.14159265 17.03.2015 16:10 # 0
bormand 17.03.2015 16:11 # +1
Ну там они вообще пидорасы. Зачем-то добавили сишкоблядские операторы, хотя SQL ну совсем никакого отношения к си не имеет...
kegdan 17.03.2015 16:39 # 0
Fike 17.03.2015 17:47 # 0
kegdan 18.03.2015 05:11 # 0
Abbath 18.03.2015 15:14 # 0
guest 17.03.2015 19:29 # +4
bormand 17.03.2015 19:33 # +3
Abbath 18.03.2015 15:15 # 0
guest 18.03.2015 05:55 # +2
Stallman 17.03.2015 13:26 # +4
Stallman 17.03.2015 13:33 # +3
someone 17.03.2015 13:34 # 0
Fike 17.03.2015 15:43 # +4
guest 18.03.2015 05:55 # 0
chtulhu 18.03.2015 08:02 # 0
bormand 17.03.2015 17:56 # +3
Хе-хе. Я тоже так думал: http://govnokod.ru/13032
> по стандарту
- Папа, а стандарт SQL существует?
- Нет сынок, это фантастика.
Lure Of Chaos 17.03.2015 19:25 # 0
kegdan 17.03.2015 19:50 # +1
bormand 17.03.2015 19:55 # +2
> PHP
roman-kashitsyn 17.03.2015 19:59 # +1
> PHP
bormand 17.03.2015 20:42 # +8
kegdan 17.03.2015 21:51 # 0
Go, Johnny, go! Go!
Go, Johnny, go! Go!
Go, Johnny, go! Go! Johnny Back End!
Stallman 17.03.2015 23:01 # +2
Rajesh Front End
Abdul PM
kegdan 18.03.2015 22:20 # 0
Lure Of Chaos 17.03.2015 20:07 # 0
kegdan 17.03.2015 20:40 # +2
guest 18.03.2015 05:57 # +1
someone 18.03.2015 08:07 # 0
gost 18.03.2015 00:15 # 0
Her 18.03.2015 02:44 # −10
1 XOR 1 = 10 и уж никак не 0
Ну а 10 это ниразу не False в битовом представлении, даже в С++
Следовательно, все ваши пробшлемы - это проблемы с пониманием работы PHP
kegdan 18.03.2015 05:04 # +10
Давай сделаем вид, что ничего не было и ты пойдешь делать уроки и никогда больше сюда не вернешься, а я взамен не скажу твоей мамке, что ты сидишь на сайтах для взрослых дядь
Fike 18.03.2015 06:00 # −1
Her 18.03.2015 22:47 # 0
Fike 18.03.2015 23:07 # 0
kegdan 18.03.2015 23:24 # +2
gost 18.03.2015 12:12 # +2
Ясно.
Abbath 18.03.2015 15:20 # +2
по модулю 2.
Stallman 18.03.2015 15:29 # +2
3.14159265 18.03.2015 15:42 # +3
Их просто надрочили что XOR и сложение - одно и тоже, и там и там плюс. А вот момент что оно по модулю 2 почему-то упускают.
Xom94ok 18.03.2015 16:38 # +3
⊕1, к ним, похоже, пришел на собеседование математик, который знает, что такое поле, кольцо и идеал, а они его упустили.
kegdan 18.03.2015 16:39 # +2
guest 18.03.2015 22:29 # 0