crypt of decay - гы [entries|archive|friends|userinfo]
ketmar

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

гы [Jan. 1st, 2015|08:30 am]
Previous Entry Add to Memories Tell A Friend Next Entry
а в конфе по D очередной флэймфест. на этот раз народ дружно пытается пояснить Уолтеру, что им нахуй не усралась калечная DTP-система, а что им нужен простой и человекочитабельный формат типа markdown.

гордая птица Уолтер гордо стоит на своём, выдавая в ответ наркоманские бредни про то, что Ddoc крутой, и он, Уолтер, Ddoc'ом книжки делал, заебок получалось. почему наркоманские бредни? потому что всем остальным в обсуждении вообще похуй на это, никто про это не спрашивал, и вообще говорили совсем о других аспектах.

а при попытке потыкать мордой в то, как выглядит человекочитаемый формат и ёбаная стена говна под названием Ddoc, он смог только промямлить «ну так ты же свой пример красиво отформатировал, а Ddoc так из std.algorithm скопипастил.» как будто если бы я добавил пробелов и переносов строк, Ddoc бы волшебно избавился от кучи говномакросов и стал читабельным. я, кстати, так и написал ниже — нет никакого смысла украсивливать Ddoc, потому что он всё равно будет говном. но десяток строк Ddoc-текста настолько нечитабельны, что даже Уолтер не смог продраться сквозь них, чтобы увидеть эту приписку.
Linkmeow!

Comments:
[User Picture]
From:[info]pizelks
Date:January 1st, 2015 - 03:59 pm
(Link)
Гы. У меня такая фигня с Lua была. Я как-то Иерусалимскому пытался объяснить, что надо хранить undef'ы в таблицах, а не удалять ключи при присвоение им nil. Потому что бля суко стрёмно. Мне в ответ было заявлено, что нехуй тут, что я вам типа язык написал, а вы за своими undef'ами сами следите.

Слежу, чо... Вместо t = { 'name' => 'value' } приходится писать t = { 'key' = 'name', val = 'value' }, чтобы при t.val = nil осталось бы хоть какое-то воспоминание о том, что в этом месте что-то было...
[User Picture]
From:[info]ketmar
Date:January 2nd, 2015 - 03:28 am
(Link)
не, вот тут я с тобой не согласен. да заведи себе вместо nil уникальное значение, и присваивай его. делов-то.
From:(Anonymous)
Date:January 2nd, 2015 - 09:05 pm
(Link)
а что плохого в nil (в частности, как значения в ассоциативном массиве)?
[User Picture]
From:[info]ketmar
Date:January 3rd, 2015 - 04:51 am
(Link)
то, что в Lua nil там хранить нельзя. по техническим причинам.
From:(Anonymous)
Date:January 3rd, 2015 - 07:59 pm
(Link)
стоп. из-за некоторых технических ограничений ты бросил D, при этом допускаешь их в Lua?
разве то, что множество значений элементов массива не равно множеству значений обычной переменной того же типа не нарушает принцип наименьшего удивления?
[User Picture]
From:[info]ketmar
Date:January 3rd, 2015 - 08:04 pm
(Link)
в данном случае — нет. nil — это «ничего». буквально. если ключу присвоить «ничего» — то при попытке запросить этот ключ ты получишь «ничего». внизапна! как и при попытке запросить ключ, которого нет. поэтому присваивание ключу «ничего» равнозначно удалению. об этом написано в документации, это так и работает.

поебень, из-за которой я дампнул D, в документации не описана. зато описаны похожие случаи, и по логике вещей оно всё должно работать одинаково.
From:(Anonymous)
Date:January 3rd, 2015 - 08:10 pm
(Link)
эм, я имел ввиду nil, как значение(value)
nil, как ключ скорее не нужен
[User Picture]
From:[info]ketmar
Date:January 3rd, 2015 - 08:28 pm
(Link)
ну, тогда разговор про типы в языке с динамической типизацией вообще непонятен. nil — это тип nil, имеет ровно одно возможное значение: nil.
[User Picture]
From:[info]pizelks
Date:January 4th, 2015 - 04:31 pm
(Link)
Пример.

mongo_remove({
collection = ‘user’,
_id = self.user_id,
})

Если ВНЕЗМАНО self.user_id = nil, то эта хуйня грохнет вю таблицу users. Да, Иерусалимский считает это багом драйвера Монги, а не Lua. А я считаю, что визуальное количество аргументов, передавайемых функции должно соответствовать их фактическу числу. Т.е. в описанном случае nil или undef (как в Перле) должен явно присутствовать в впередаваему таблице. Я жду, что это так, и когда мне гроют всю таблицу не спрсясь, я какбэ несколько удивляюсь. да, понятно, что этого можно избежать. Но почему в Perl та же функция различает null и undef, и не удалит ничего, а просто пролетит, как фанера над Парижем, а в Луа все такие умные, что аж тапки жмут?

Ещё раз, если я хочу удалить ключ из таблицы, я сделаю это руками. Например delete(table.key). Но я не хочу. Я хочу, чтобы он был, но имел значение indef или null на худой конец. А "уникальное значение" - это вообще бред. Например 0 - это тоже id. Могу, конечно, анписать = self.user_id or 0, я не гордый, но это блин ёбаный надмозг.
[User Picture]
From:[info]ketmar
Date:January 4th, 2015 - 05:06 pm
(Link)
вообще-то, уникальное значение — это любое light userdata. или, например, пустая таблица. оно риальне уникальное.

а насчёт nil… вот нет в Lua undefined. вообще. об этом написано в документации, кто документацию игнорирует и хочет хуй знает чего — сам себе буратина. а nil — это «ничего». именно «ничего». хранить в таблице «ничего» никакого смысла нет.

я, в общем, понимаю твои претензии, но сам на стороне роберто. создай себе уникальное значение undef и радуйся.