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

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

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

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

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

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

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

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

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

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

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

#A9QJJ9/GSL / @ninesigns --> #A9QJJ9/I4R / 3284 дня назад

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

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

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

#A9QJJ9/AJS / @ninesigns --> #A9QJJ9/4QV / 3284 дня назад
@ninesigns можно написать не программу
#A9QJJ9/0M9 / @n --> #A9QJJ9/AJS / 3284 дня назад
@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 / 3284 дня назад

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

#A9QJJ9/1YB / @ninesigns --> #A9QJJ9/0M9 / 3284 дня назад

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

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

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

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

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

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

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

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

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

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

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

вин

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

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

пук

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

триплвин

Съеби.

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

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

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

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

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

#A9QJJ9/770 / @ninesigns --> #A9QJJ9/NHH / 3284 дня назад

@ninesigns Elm обв

#A9QJJ9/P73 / @anonymous --> #A9QJJ9/WCX / 3284 дня назад

@anonymous норм

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

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

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

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

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

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

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

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

#A9QJJ9/Q15 / @ninesigns --> #A9QJJ9/VWB / 3284 дня назад

@anonymous oche tolsto

#A9QJJ9/0R5 / @anonymous --> #A9QJJ9/8PB / 3284 дня назад
@anonymous что не так? перепутать аргументы с человеческим автодополнением может только слепой
#A9QJJ9/0SN / @anonymous --> #A9QJJ9/0R5 / 3284 дня назад
@lexszero > даже В петушоне вообще охуенно с аргументами, именованные, значения по умолчанию, *, **, аннотации, вот это всё.
#A9QJJ9/RB9 / @anonymous --> #A9QJJ9/G5V / 3284 дня назад
% 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 / 3284 дня назад
@l29ah Казалось бы, причем тут ADT, когда тут обыкновенная структура?
#A9QJJ9/M2A / @komar --> #A9QJJ9/TPJ / 3284 дня назад
@anonymous обосрался
#A9QJJ9/QB2 / @komar --> #A9QJJ9/O8K / 3284 дня назад
@komar че
#A9QJJ9/7H2 / @l29ah --> #A9QJJ9/M2A / 3284 дня назад
@komar Блджад, забери свой камл и уходи.
#A9QJJ9/Q93 / @je --> #A9QJJ9/IFB / 3284 дня назад
@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 / 3284 дня назад
@l29ah Хаскел это по-нашенски, ня.
#A9QJJ9/U49 / @je --> #A9QJJ9/W2I / 3284 дня назад

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

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

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

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

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

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

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

#A9QJJ9/UKM / @ninesigns --> #A9QJJ9/RO7 / 3284 дня назад

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

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

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

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

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

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

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

#A9QJJ9/MLP / @ninesigns --> #A9QJJ9/RMS / 3284 дня назад

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

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

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

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

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

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

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

#A9QJJ9/8RC / @ninesigns --> #A9QJJ9/U5Z / 3284 дня назад

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

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

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

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

#A9QJJ9/758 / @ninesigns --> #A9QJJ9/2OQ / 3284 дня назад

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

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

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

#A9QJJ9/QFW / @ninesigns --> #A9QJJ9/0CN / 3284 дня назад
@ninesigns Скриптопараша нужна, фанбои которые на ней ебашат сложную логику - нет.
#A9QJJ9/TJT / @l29ah --> #A9QJJ9/QFW / 3284 дня назад
@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 / 3284 дня назад
@ninesigns Хаскель — дерьмо собачье.
#A9QJJ9/9S0 / @komar --> #A9QJJ9/QFW / 3284 дня назад

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

#A9QJJ9/RIJ / @lexszero --> #A9QJJ9/758 / 3284 дня назад

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

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

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

#A9QJJ9/QEN / @minoru --> #A9QJJ9/0VE / 3284 дня назад
@minoru ImplicitParams
#A9QJJ9/IJS / @l29ah --> #A9QJJ9/QEN / 3284 дня назад

@l29ah Спасибо.

#A9QJJ9/Z4U / @minoru --> #A9QJJ9/IJS / 3284 дня назад
#A9QJJ9/NWL / @krkm --> #A9QJJ9/OTO / 3283 дня назад

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 / 3283 дня назад

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

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

@komar это Idris

#A9QJJ9/YHB / @ninesigns --> #A9QJJ9/V4W / 3283 дня назад

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

#A9QJJ9/J6U / @lexszero --> #A9QJJ9/9F7 / 3283 дня назад

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

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

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

#A9QJJ9/Z0L / @ulidtko --> #A9QJJ9/FTO / 3283 дня назад

@ninesigns

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

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

#A9QJJ9/7IT / @ulidtko --> #A9QJJ9/FTO / 3283 дня назад

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

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

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

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

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

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