Имбирь - твой спиритический овощ. Войти !bnw Сегодня Клубы

Один из главных отососов в современных языках программирования - это отсутсвие во многих из них поддержки keyword arguments.

Эта хуйня существенно повышает читаемость и, как следствие, качество кода.

В некоторых ЯП, в которых есть встроеные литералы для словарей проблема может решаться ими.
В остальных - это мрак, отсос и говно.

Как ни странно, божественная статическая типизация тут не роляет совершенно. Ведь очень легко перепутать аргументы с одинаковыми типами местами и потом долго ломать голову какого Х не работает. В случае keyword args достаточно поверхностного осмотра кода, чтобы понять что не так.

Рекомендовали: @krkm
#A9QJJ9 / @ninesigns / 3220 дней назад

Не нужно. Есть же ADT. Или ты путаешь местами аргументы у (**)?
#A9QJJ9/I4R / @l29ah / 3220 дней назад

Как ни странно, божественная статическая типизация тут не роляет совершенно. Ведь очень легко перепутать аргументы с одинаковыми типами местами

В идеальном строгом статически типизированном коде аргументов с одинаковыми типами не должно быть, очевидно же.

#A9QJJ9/O8K / @anonymous / 3220 дней назад
чё? есть же прекрасный #define
#A9QJJ9/3LI / @n / 3220 дней назад
@n Уёбывай.
#A9QJJ9/NS2 / @l29ah --> #A9QJJ9/3LI / 3220 дней назад
нужно только если супехдохуя параметров у функции, во всех остальных случаях от "перепутать аргументы с одинаковыми типами местами" не спасёт потому что не будет использовано есть в петухоне, вба, джабба-скрипте
#A9QJJ9/QKQ / @mugiseyebrows / 3220 дней назад
@l29ah #define l29ah cocy_xyu
#A9QJJ9/L53 / @n --> #A9QJJ9/NS2 / 3220 дней назад

@l29ah если конструктор ADT принимает аргументы с одинаковыми типами тыо ты back at the square one

#A9QJJ9/GSL / @ninesigns --> #A9QJJ9/I4R / 3220 дней назад

даже в петушоне есть.

#A9QJJ9/G5V / @lexszero / 3220 дней назад
@mugiseyebrows не языки программирования
#A9QJJ9/4QV / @n --> #A9QJJ9/QKQ / 3220 дней назад

@n на "не языке программирования" можно написать программу?

#A9QJJ9/AJS / @ninesigns --> #A9QJJ9/4QV / 3220 дней назад
@ninesigns можно написать не программу
#A9QJJ9/0M9 / @n --> #A9QJJ9/AJS / 3220 дней назад
@ninesigns λ> data Loh = Loh {hui::Int, pzd::Int} deriving Show λ> Loh {pzd = 14, hui = 88} Loh {hui = 88, pzd = 14} Я спасён сука. Вообще решается ADT-обёртками.
#A9QJJ9/TPJ / @l29ah --> #A9QJJ9/GSL / 3220 дней назад

@n что такое "не программа" и как отличить ее от программы?

#A9QJJ9/1YB / @ninesigns --> #A9QJJ9/0M9 / 3220 дней назад

@l29ah охуенно, плодить record-типы под каждый кусок говна, который можно вызвать.

бурные овации в зале.

#A9QJJ9/TOA / @ninesigns --> #A9QJJ9/TPJ / 3220 дней назад
@ninesigns эксель настолько охуенен что программы не нужны свободно, расширяемо, абстрактно // лайк если компилировал линейную интерполяцию вместе с данными в чистую функцию экселя
#A9QJJ9/3YK / @mugiseyebrows --> #A9QJJ9/AJS / 3220 дней назад
@ninesigns Не каждый, а только тот где ты можешь обосраться. Ты так и не ответил, (**) у тебя вызывает проблемы или че.
#A9QJJ9/S6X / @l29ah --> #A9QJJ9/TOA / 3220 дней назад

@l29ah что такое (**) ?

#A9QJJ9/1LM / @ninesigns --> #A9QJJ9/S6X / 3220 дней назад
@ninesigns λ> 2**16 65536.0
#A9QJJ9/FU3 / @l29ah --> #A9QJJ9/1LM / 3220 дней назад

@l29ah нет, мне похуй на мюслекалькуляторы.
вот пример из реально жизни:

krkm> я щас 4 часа дебажил жаваскрипты, а оказалось я порядок аргументов в
колбеке своей же поеботы перепуал. мам, я достаточно опущенный?

#A9QJJ9/WU6 / @ninesigns --> #A9QJJ9/FU3 / 3220 дней назад
@ninesigns не программа не работает нихуя
#A9QJJ9/IDZ / @n --> #A9QJJ9/1YB / 3220 дней назад

@n вебморда гмыла работает

#A9QJJ9/0O4 / @ninesigns --> #A9QJJ9/IDZ / 3220 дней назад
@ninesigns > жаваскрипты вин > сам отстрелил себе ногу хуёвым дизайном даблвин > поддержка языком именованных аргументов никак не спасла триплвин Съеби.
#A9QJJ9/OTO / @l29ah --> #A9QJJ9/WU6 / 3220 дней назад

@l29ah > > жаваскрипты

вин

предложи клиент-сайд язык для веба

сам отстрелил себе ногу хуёвым дизайном
даблвин

пук

поддержка языком именованных аргументов никак не спасла

триплвин

Съеби.

в JS нет именованых аргументов

#A9QJJ9/WCX / @ninesigns --> #A9QJJ9/OTO / 3220 дней назад
@ninesigns в жс нет именованых аргументов, но каждая вторая либа пуляет из функции в функцию словари, что почти тоже самое
#A9QJJ9/L23 / @mugiseyebrows --> #A9QJJ9/WCX / 3220 дней назад
@ninesigns Хаскель. пук выше сказали шо есть, сорь
#A9QJJ9/SV8 / @l29ah --> #A9QJJ9/WCX / 3220 дней назад

@l29ah покажи примеры клиентсайд веб приложений, исполненых на хаскеле
пук
погугли, долбоеб

#A9QJJ9/40S / @ninesigns --> #A9QJJ9/SV8 / 3220 дней назад
Питон и голанг поддерживает, на остальное пахуй.
#A9QJJ9/C6A / @je / 3220 дней назад
@ninesigns ещё скажи что фейсбук работает
#A9QJJ9/NHH / @n --> #A9QJJ9/0O4 / 3220 дней назад

@n не перескакивай.
давай список багов гмыла, которые делают его неюзабельным.

#A9QJJ9/770 / @ninesigns --> #A9QJJ9/NHH / 3220 дней назад

@ninesigns Elm обв

#A9QJJ9/P73 / @anonymous --> #A9QJJ9/WCX / 3220 дней назад

@anonymous норм

#A9QJJ9/J2T / @ninesigns --> #A9QJJ9/P73 / 3220 дней назад
@ninesigns Погугли, долбоёб. Пук.
#A9QJJ9/3FW / @l29ah --> #A9QJJ9/40S / 3220 дней назад

@l29ah burden of proof. съеби, ты бесполезен.

#A9QJJ9/TBI / @ninesigns --> #A9QJJ9/3FW / 3220 дней назад
@ninesigns Будто мне это нужно всё, лал.
#A9QJJ9/CGP / @l29ah --> #A9QJJ9/TBI / 3220 дней назад

@mugiseyebrows аргумент уровня "долбоеб будет писать на любом языке как на фортране"

#A9QJJ9/C0A / @ninesigns --> #A9QJJ9/QKQ / 3220 дней назад
> перепутал порядок аргументов > нет/не юзает IDE / умный блокнот типа Visual Studio Code ссзб
#A9QJJ9/8PB / @anonymous / 3220 дней назад
@ninesigns долбоёб будет применять именованые параметры в функции с двумя аргументами (писать в два раза больше букв)
#A9QJJ9/SA5 / @mugiseyebrows --> #A9QJJ9/C0A / 3220 дней назад
@ninesigns она на жабе написана, тупой штоле
#A9QJJ9/VWB / @anonymous --> #A9QJJ9/0O4 / 3220 дней назад
@mugiseyebrows Всегда использую это, в динамической типизации без этого вообще черт ногу сломит
#A9QJJ9/V7J / @je --> #A9QJJ9/SA5 / 3220 дней назад
@je distinguish(pupsen=1,vupsen=2)
#A9QJJ9/YS6 / @mugiseyebrows --> #A9QJJ9/V7J / 3220 дней назад

@mugiseyebrows сокращать объем кода надо правильными абосракциями (например макросами), а не экономить на спичках типа имен переменных или вызовых функций.

#A9QJJ9/ALC / @ninesigns --> #A9QJJ9/SA5 / 3220 дней назад
@ninesigns это пример того как кто-то не видит дальше залупы собственного носа и запрещает всё подряд. в данном случае проблема не в том что можно перепутать аргументы местами, а в том что эта ошибка может протечь слишком далеко и поэтому её хуй поймаешь. очень типично для скриптопараши.
#A9QJJ9/TMM / @anonymous --> #A9QJJ9/WU6 / 3220 дней назад
@ninesigns Это, тем более любой вменяемый редактор комплитит.
#A9QJJ9/OU5 / @je --> #A9QJJ9/ALC / 3220 дней назад
@ninesigns сорь, пишу только программы в 140 символов, чтобы интерпретатор заинлайнил
#A9QJJ9/86J / @mugiseyebrows --> #A9QJJ9/ALC / 3220 дней назад
@mugiseyebrows Скажи еще заволатайтил. Интерпретатор.
#A9QJJ9/LJ9 / @je --> #A9QJJ9/86J / 3220 дней назад

@anonymous то есть, с noscript будет работать?

#A9QJJ9/Q15 / @ninesigns --> #A9QJJ9/VWB / 3220 дней назад

@anonymous oche tolsto

#A9QJJ9/0R5 / @anonymous --> #A9QJJ9/8PB / 3220 дней назад
@anonymous что не так? перепутать аргументы с человеческим автодополнением может только слепой
#A9QJJ9/0SN / @anonymous --> #A9QJJ9/0R5 / 3220 дней назад
@lexszero > даже В петушоне вообще охуенно с аргументами, именованные, значения по умолчанию, *, **, аннотации, вот это всё.
#A9QJJ9/RB9 / @anonymous --> #A9QJJ9/G5V / 3220 дней назад
% ocaml OCaml version 4.01.0 # let f ~x ~y = x - y;; val f : x:int -> y:int -> int = <fun> # f ~y:1 ~x:2;; - : int = 1 хз че за отсос
#A9QJJ9/IFB / @komar / 3220 дней назад
@l29ah Казалось бы, причем тут ADT, когда тут обыкновенная структура?
#A9QJJ9/M2A / @komar --> #A9QJJ9/TPJ / 3220 дней назад
@anonymous обосрался
#A9QJJ9/QB2 / @komar --> #A9QJJ9/O8K / 3220 дней назад
@komar че
#A9QJJ9/7H2 / @l29ah --> #A9QJJ9/M2A / 3220 дней назад
@komar Блджад, забери свой камл и уходи.
#A9QJJ9/Q93 / @je --> #A9QJJ9/IFB / 3220 дней назад
@je GHCi, version 7.10.2: http://www.haskell.org/ghc/ :? for help λ> let pook = 1 + ?puk `div` ?perd :: (?puk :: Int, ?perd :: Int) => Int λ> let ?puk = 10; ?perd = 5 in pook 3
#A9QJJ9/W2I / @l29ah --> #A9QJJ9/Q93 / 3220 дней назад
@l29ah Хаскел это по-нашенски, ня.
#A9QJJ9/U49 / @je --> #A9QJJ9/W2I / 3220 дней назад

@je > по-нашенски
"вы" - это кто?

#A9QJJ9/PBR / @ninesigns --> #A9QJJ9/U49 / 3220 дней назад
> Ведь очень легко перепутать аргументы с одинаковыми типами местами и потом долго ломать голову какого Х не работает Прост нужно запретить на уровне типчиков функции с аргументами одинаковых типов.
#A9QJJ9/RO7 / @kuzy000 / 3220 дней назад
@kuzy000 перепись долбоебов в этом итт треде
#A9QJJ9/AIH / @komar --> #A9QJJ9/RO7 / 3220 дней назад
@komar Как решается описанная проблема в мире рельсопетухов?
#A9QJJ9/GBB / @l29ah --> #A9QJJ9/AIH / 3220 дней назад
@l29ah Поменяли кавычки на `:`.
#A9QJJ9/CQB / @kuzy000 --> #A9QJJ9/GBB / 3220 дней назад
@l29ah Эти уебаны передают хэши в функции ололо.
#A9QJJ9/83F / @je --> #A9QJJ9/GBB / 3220 дней назад
#A9QJJ9/EAO / @komar --> #A9QJJ9/CQB / 3220 дней назад
@l29ah В мире рельсопетухов все есть хеш, и даже небо, и даже Аллах.
#A9QJJ9/E8O / @komar --> #A9QJJ9/GBB / 3220 дней назад
@komar Вы йобнутые прост, дали вам питухон с десятком фреймворков, нет буду говно жрать и слоупочить руби.
#A9QJJ9/QUB / @je --> #A9QJJ9/E8O / 3220 дней назад
@je mfw всерьёз обсуждают сорта скриптопараши
#A9QJJ9/7JF / @l29ah --> #A9QJJ9/QUB / 3220 дней назад
@ninesigns биткойн-майнер юзает меньше ресурсов чем это говно которое нихуя не делает
#A9QJJ9/F6I / @n --> #A9QJJ9/770 / 3220 дней назад
@l29ah this
#A9QJJ9/A1Z / @komar --> #A9QJJ9/7JF / 3220 дней назад

Один из главных отососов в современных языках программирования - это идиоты, на них программирующие.

#A9QJJ9/ZF4 / @lexszero / 3220 дней назад
@lexszero именно. C - язык программирования, осталтное костыли для слабоумных
#A9QJJ9/2HY / @n --> #A9QJJ9/ZF4 / 3220 дней назад
@n ну ладно, C++ ещё
#A9QJJ9/OFP / @n --> #A9QJJ9/2HY / 3220 дней назад
#A9QJJ9/N9B / @postman --> #A9QJJ9/WU6 / 3220 дней назад
@postman а ты еще кто такой
#A9QJJ9/BNV / @anonymous --> #A9QJJ9/N9B / 3220 дней назад

@n на bnw есть хоть один человек, считающий что твое мнение о языках программирования заслуживает хоть капли внимания?

#A9QJJ9/4WQ / @ninesigns --> #A9QJJ9/2HY / 3220 дней назад
@anonymous Твой папа.
#A9QJJ9/N0E / @postman --> #A9QJJ9/BNV / 3220 дней назад

@kuzy000 Вы, наверное, из России?

#A9QJJ9/UKM / @ninesigns --> #A9QJJ9/RO7 / 3220 дней назад

@n > подменил понятия "не работает" -> "жрет ресурсы"

bnw
надеется что не заметят

мысленно поссал тебе в ебло

#A9QJJ9/J0M / @ninesigns --> #A9QJJ9/F6I / 3220 дней назад
@ninesigns Ладно-ладно, нужно, просто, что бы не было спроса на такие функции.
#A9QJJ9/HUD / @kuzy000 --> #A9QJJ9/UKM / 3220 дней назад
@ninesigns 20 fps
#A9QJJ9/RMS / @kuzy000 --> #A9QJJ9/J0M / 3220 дней назад

@l29ah у тебя в примере не ADT.
кстати в хаскеле можно на ходу передать в функцию свой record type?

#A9QJJ9/PYC / @ninesigns --> #A9QJJ9/7H2 / 3220 дней назад
@ninesigns Не понял вопроса, нарисуй пример на псевдокоде.
#A9QJJ9/GT8 / @l29ah --> #A9QJJ9/PYC / 3220 дней назад

@kuzy000 20 fps для почтового клиента - приемлемо

#A9QJJ9/MLP / @ninesigns --> #A9QJJ9/RMS / 3220 дней назад

@l29ah func ({huy = 10, pizda = "pizda"})

#A9QJJ9/EPC / @ninesigns --> #A9QJJ9/GT8 / 3220 дней назад
@kuzy000 Как ты измерил? // RMS не одобряет твой камент
#A9QJJ9/3ZK / @l29ah --> #A9QJJ9/RMS / 3220 дней назад
@ninesigns f $ Foo {huy=10;pizda="pizda"}
#A9QJJ9/BAN / @l29ah --> #A9QJJ9/EPC / 3220 дней назад

@l29ah хуйта.
зачем Foo писать если по сигнатуре и так понятно?

#A9QJJ9/55F / @ninesigns --> #A9QJJ9/BAN / 3220 дней назад
@ninesigns Затем что это конструктор типа, а их у типа может быть несколько.
#A9QJJ9/SQZ / @l29ah --> #A9QJJ9/55F / 3220 дней назад

@l29ah для record types может быть несколько конструкторов? нахуя?

#A9QJJ9/S2Q / @ninesigns --> #A9QJJ9/SQZ / 3220 дней назад
@l29ah Записи это всего лишь синтаксисический сахар вокруг ADT.
#A9QJJ9/U5Z / @l29ah --> #A9QJJ9/KQN / 3220 дней назад

@l29ah ясно понятно, короче в хаскель хуже даже питошона в том что касается keyword arguments

#A9QJJ9/8RC / @ninesigns --> #A9QJJ9/U5Z / 3220 дней назад

@ninesigns можно сахар на TH наговнить наверное :3

#A9QJJ9/0C7 / @lexszero --> #A9QJJ9/8RC / 3220 дней назад
@ninesigns Потому что нахуй они нужны со статической типизацией, RWST и вменяемой декомпозицией?
#A9QJJ9/2OQ / @l29ah --> #A9QJJ9/8RC / 3220 дней назад
@ninesigns Ничье мнение на BNW не заслуживает внимания. У постояльцев BNW три нейрона в межушном нервном узле, и все, что они говорят, предсказуемо до полного опизденения от скуки. Их пиздеж можно воспринимать просто как объективную реальность. «Ниндзя будет рекомендовать эродин для поездок по бездорожью», «лях будет рекомендовать кроссовки для зимних походов», вот как-то так.
#A9QJJ9/0GA / @komar --> #A9QJJ9/4WQ / 3220 дней назад
@ninesigns Блядь, не сравнивай, пожалуйста, скриптопарашу, где в рантайме можно поменять черта лысого, и нормальный язык с нормальным компилятором. Второй следать на пару порядков сложнее.
#A9QJJ9/0CN / @komar --> #A9QJJ9/8RC / 3220 дней назад

@l29ah как мы видим, твоя статическая типизация никаким хуем не позволила написать так:
func ({hui=10, pizda=11})

если я хочу писать в таком стиле то мне на каждую функцию придется высирать свой record type и указывать его type constructor в месте выхова.

#A9QJJ9/758 / @ninesigns --> #A9QJJ9/2OQ / 3220 дней назад

@komar комар будет рекомендовать ботинки из декатлона для высокогорных восхождений

#A9QJJ9/96S / @lexszero --> #A9QJJ9/0GA / 3220 дней назад
@lexszero Я разве тебе не говорил, что следующей моей покупкой будут пластиковые ботинки?
#A9QJJ9/C2A / @komar --> #A9QJJ9/96S / 3220 дней назад

@komar ну бля сорь, скриптопараша тоже нужна, иначе все давно бы уже обмазывались одним единственным божественным хаскелем

#A9QJJ9/QFW / @ninesigns --> #A9QJJ9/0CN / 3220 дней назад
@ninesigns Скриптопараша нужна, фанбои которые на ней ебашат сложную логику - нет.
#A9QJJ9/TJT / @l29ah --> #A9QJJ9/QFW / 3220 дней назад
@ninesigns # let f o = o#x + o#y;; val f : < x : int; y : int; .. > -> int = <fun> # f (object method x = 1 method y = 2 end);; - : int = 3
#A9QJJ9/VC1 / @komar --> #A9QJJ9/758 / 3220 дней назад
@ninesigns Хаскель — дерьмо собачье.
#A9QJJ9/9S0 / @komar --> #A9QJJ9/QFW / 3220 дней назад

@ninesigns если я хочу писать в таком стиле на петушоне, мне надо на каждую функцию высирать def func(hui, pizda)
обмажься cpp если лень буквы набирать.

#A9QJJ9/RIJ / @lexszero --> #A9QJJ9/758 / 3220 дней назад

@l29ah Ты расширение какое-то заюзал?

#A9QJJ9/YCU / @minoru --> #A9QJJ9/W2I / 3220 дней назад
@minoru Да. Никто в здравом уме эту наркоманию в стандарт не включит.
#A9QJJ9/0VE / @l29ah --> #A9QJJ9/YCU / 3220 дней назад

@l29ah А называется как?

#A9QJJ9/QEN / @minoru --> #A9QJJ9/0VE / 3220 дней назад
@minoru ImplicitParams
#A9QJJ9/IJS / @l29ah --> #A9QJJ9/QEN / 3220 дней назад

@l29ah Спасибо.

#A9QJJ9/Z4U / @minoru --> #A9QJJ9/IJS / 3220 дней назад
#A9QJJ9/NWL / @krkm --> #A9QJJ9/OTO / 3219 дней назад

https://eb.host.cs.st-andrews.ac.uk/drafts/eff-tutorial.pdf#31

I wrote down a set of likely rules making any assumptions explicit in the state transitions for MysteryRules. Then, when implementing

game at first, any incorrect assumption was caught as a type error. The following errors were caught during development:

  • Not realising that allowing NewWord to be an arbitrary string would mean that game would have to deal with a zero-length word as a starting state.

  • Forgetting to check whether a game was won before recursively calling processGuess, thus accidentally continuing a finished game.

  • Accidentally checking the number of missing letters, rather than the number of remaining guesses, when checking if a game was lost.

These are, of course, simple errors, but were caught by the type checker before any testing of the game.


ошибка тайпчекера из-за два интов перепутаных местами

Как ни странно, божественная статическая типизация тут не роляет совершенно.

тред не читал (и не собираюсь); ссал в карман ОПу-долбоебу за неуважение к науке

#A9QJJ9/9F7 / @ulidtko / 3219 дней назад

@ulidtko поясните свой пук, пожалуйста.

#A9QJJ9/FTO / @ninesigns --> #A9QJJ9/9F7 / 3219 дней назад
@ninesigns хаскель блядь идеальный сука пидор тупой штоле
#A9QJJ9/V4W / @komar --> #A9QJJ9/FTO / 3219 дней назад

@komar это Idris

#A9QJJ9/YHB / @ninesigns --> #A9QJJ9/V4W / 3219 дней назад

@ulidtko ну еба, newtype'ишь свои инты и профит. правда, придется прописывать для этих типов небо и аллаха.

#A9QJJ9/J6U / @lexszero --> #A9QJJ9/9F7 / 3219 дней назад

@ninesigns ты слепой блядь или что?

бумагу открой, там Эдвин Брейди сделал всё по науке, именно так как ты просил (перепутал переменные — ошибка типов, поменял как правильно — ОК)

пересказывать весь контент оттуда пусть кто-то другой станет

#A9QJJ9/Z0L / @ulidtko --> #A9QJJ9/FTO / 3219 дней назад

@ninesigns

case g of
Z => Lost
(S k) => game

здесь изначально было case w of ..., и это ошибка. И g, и w имеют тип Nat.

#A9QJJ9/7IT / @ulidtko --> #A9QJJ9/FTO / 3219 дней назад

@lexszero не, это хуйня. Придётся синтаксический мёд лить бочками, чтобы хоть кто-то так делал.

Алсо жажду спалить годноту (всего ★119), но оно канеш так себе, на любителя.

#A9QJJ9/NIT / @ulidtko --> #A9QJJ9/J6U / 3219 дней назад
@krkm Хули ты ебло своё припёр, иди чисти жаваскрипт вилкой.
#A9QJJ9/RGQ / @l29ah --> #A9QJJ9/NWL / 3219 дней назад
@ninesigns ну, ты же отвечаешь
#A9QJJ9/03C / @n --> #A9QJJ9/4WQ / 3218 дней назад
@ninesigns может, и коробка едет? чего мелочиться.
#A9QJJ9/D83 / @n --> #A9QJJ9/J0M / 3218 дней назад
@ninesigns форекс трейдер нассыт тебе в анус за такое
#A9QJJ9/FN7 / @n --> #A9QJJ9/MLP / 3218 дней назад
@komar нормально едет по бездорожью, кстати - https://youtu.be/smeU6mS8KAw?t=1h3m3s
#A9QJJ9/VAF / @n --> #A9QJJ9/0GA / 3218 дней назад

@n слабо прикрытая попытка перевести ветку в привычное поле хрустодемагогии. незачет // пошел нахуй

#A9QJJ9/X44 / @ninesigns --> #A9QJJ9/D83 / 3218 дней назад
@ninesigns ты сначала ездить научись, а потом я с тобой разговаривать буду. и электровелосипед свой смени на что-нибудь мужское
#A9QJJ9/1Z7 / @n --> #A9QJJ9/X44 / 3218 дней назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.