- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
class QuerysetResponse(object):
"""
вариант респонса для фильтрации гридов или диктселекфилдов
используя механизм инструкций
"""
def __init__(self, queryset, application, root=None):
self.root = root or "data"
def __new__(cls, *args, **kwargs):
return super(cls, cls).__new__(cls)(*args, **kwargs)
def __call__(self, queryset, application):
dict_list = []
pack = get_pack_instance(application)
for item in pack.list_columns:
if isinstance(item, (list, tuple)):
dict_list.append(item[0])
elif isinstance(item, dict) and item.get('data_index'):
dict_list.append(item['data_index'])
self.dict_ = dict_list
if not queryset:
queryset = []
return PreJsonResult(dict(rows=list(queryset),
total=len(queryset)), dict_list=self.dict_).get_http_response()
self.root не используется, ну, это видно. QuerysetResponse "инстанцируется" во всем проекте один раз.
Мне бы такое даже в голову не пришло.
wvxvw 21.01.2015 16:56 # 0
pycz 21.01.2015 17:07 # 0
wvxvw 21.01.2015 17:32 # 0
3.14159265 23.01.2015 00:29 # +3
Всё начинается с того что мудак-функциональщик читает какую-нибудь «умную» книгу типа Little Schemer. Ну обычно хуже того: поциент узнает про самый лучший в мире язык хаскель. И во всяких быдлосайтах и говноблогах типа хабры он черпает свои знания.
Он долго тужится, пытаясь вникуть в суть буковок и однажды он вроде что-то там понимает. И тут начинается срашное: эта пиздота лезет на форумы и выплескивает свой ментально-функциональный гной на ничего не подозревающих окружающих, обязательно делая это наиболее ублюдочным способом: на языке хаскель или лисп.
«Ах, вы знаете господа я давеча читал про комбинатор неподвижной точки. Ах, ах, божественно! Ах, какая прелесть лябмда-исчисление! Какой блеск, функции высшего порядка, рекурсия. Ах! Ах! Высший класс! Циклы? Ах, глупости! Императивщина. Фи, как скучно!»
Просто и понятно ответить на законный вопрос недоумевающих читателей «зачем это простому человеку» тупой функциональный пиздюк не может. Вместо этого он начинает с важным видом дристать многабукав о том как всё нетривиально, и тупым идиотам на том форуме куда он пришёл конечно не понять генитальных задумок. Но как говорил Лев Толстой: «Самый верный признак истины — простота и ясность. Ложь всегда сложна и многословна.»
Практического применения очередной абстрактной хуиты, функциональная мразь найти не может. Вместо того чтобы показать пользу от мозговыносящего уёбищного сгустка замыканий мудак начинает рассказывать басни о том как он научился считать факториалы и числа Фибоначчи, используя бесконечные ряды функций, которые генериуют и постоянно вызывают сами себя.
Однако попроси применить Y-комбинатор, чтобы решить какую-нибудь нешаблонную задачку: найти бесконечную же сумму всех натуральных чисел, как тут же следует неловкая тишина и пердеж в лужу.
bormand 23.01.2015 00:45 # +1
В чем-то ты прав, копипаста-кун. Но ведь концепции, обкатанные на этих языках, всё же проходят и в мейнстрим (гц, замыкания, метапрограмминг и т.п.). Просто не надо искать в функциональщине серебряную пулю.
3.14159265 23.01.2015 01:01 # 0
Чего? Какой кун? Какая нахер копипаста? Доставило, да? Я сам только что написал, это свежак. Можете вбрасывать гы-гы.
Давай сюда откуда это скопировано.
Здается мне что Карри просто хотел выебнуться перед коллегами: а можно ли сделать что-то рабочее на одних только анонимных функциях? Вообще без имен? Циклы можно заменить рекурсией, как же редуцировать рекурсию?
Это то чем так любят маяться на говнокоде: решать какую-то простенькую задачу, запредельно сумасшедшим, иррациональнейшим и извращённым образом, (семантика delete new от 1024--, шифрование на макросах и прочие примеры, которые уплыли из моей памяти). Может какое-то практическое применение и найдут, но делается это в первую очередь just for lulz & proof of concept.
bormand 23.01.2015 01:19 # 0
3.14159265 23.01.2015 01:26 # 0
Это понятно.
>Но ведь концепции, обкатанные на этих языках, всё же проходят и в мейнстрим (гц, замыкания, метапрограмминг и т.п.)
Но речь конкретно об Y-кобенаторе. Какая в нём практическая польза, кроме показать как мы умеем на анонимных функциях строить рекурсию без хаков типа args.callee()?
Сделать из нерекурсивной функции рекурсивную, и бесконечно повторяющуюся? Добавить колобки до и после рекурсии?
Так это я и в цикле могу сделать, с большим, между прочим, успехом.
bormand 23.01.2015 01:28 # 0
bormand 23.01.2015 01:40 # 0
wvxvw 23.01.2015 02:16 # 0
А в целом у комбинаторов? - польза в том, что с их помощью можно упрощать рекуррентные отношения. Зачем нужно упрощать рекуррентные отношения? - через них, например, можно вычислять более точно сложность алгоритмов (не привязываясь к асимптотике, а через приближение), другое их применение - формальная спецификация системы, статический анализ програм, как на когерентность так и на производительность. Если очень хочется, у меня есть где-то в закладках книжка про это, но мне она оказалась очень сложной.
bormand 23.01.2015 09:23 # 0
С тем же успехом можно свести их к циклу или CPS.
wvxvw 23.01.2015 10:40 # +2
3.14159265 23.01.2015 14:31 # 0
Спасибо за объяснение. Я знал что вы не входите в категорию функциональных мудаков, которые не могут толком объяснить зачем нужны те вещи что они яростно форсят.
То есть причина по сути прежняя: редукционизм средств языка (VM), но признаюсь если б в js не было arguments.callee, то может я б и сам воспользовался комбинатором неподвижной точки (правда опять-таки не в практических целях, а изъеба ради).
> но классика жанра типа SECD - там его нету
Функциональщина ради функциональщины.
wvxvw 23.01.2015 14:57 # +1
3.14159265 23.01.2015 15:25 # +1
> Но попытка максимально упростить систему, для того, чтобы с ней было проще работать автоматически мне не кажется глупой.
Конечно нет! Минимализация базиса используется сплошь и рядом: свести все бинарные операции к nand, чтобы проще создавать схемы, да и сама по себе двоичная система кажется громоздкой, но машины работают именно в ней, поскольку она самая простая.
Risc-процессоры - ограниченное число команд (и даже x86 сводится внутри к risc с незапамятных времен), туда же языковой минимализм, где ставка делается не на сахар, а на композицию и абстракции, таким образом код легче парсить (опять-таки автоматически).
Но вот человеку написать что-то руками на брейнфаке, risc-инструкцими или в литералах Чёрча чрезвычайно трудно. И практически смысла никакого нет.
3.14159265 23.01.2015 14:17 # 0
А как это?
wvxvw 23.01.2015 14:25 # +2
Лучше если я не буду это своими словами объяснять от греха подальше.
3.14159265 23.01.2015 14:36 # +1
Хотя вообще познавательно.
wvxvw 23.01.2015 14:52 # 0
Если все-таки своими словами мотивация заключается в том, чтобы формализовать понятие "примерно", примерно так же как лимиты / интегралы. Т.е. это позволяет автоматизировать, в какой-то степени, поиск аналитических решений для рекурсивно определенных функций. Например, сложность квиксорта можно описать как сложность(Х) = сложность(Х/2) + сложность(Х/2) + сложность_нахождения_пивота(Х) + сложность_партиции(Х). Если потом найти стабильную точку этой функции, то применив еще несколько операций для получения закрытой формулы (операции описываются в книжке), мы сможем получить очень хорошее приближение к настоящей скорости квиксорта зависящее от цены выполнения инструкции на конкретной машине, а не от констант и "не интерестных" факторов, которые обычно теряются при асимптотическом анализе.
3.14159265 23.01.2015 15:02 # +1
Я думал там про лямбда-исчисление (кстати где там собственно Y-кобенаторы), а это реально книжка по математике применительно к computer science. Читаю сугубо ради неё.
Ну оно и понятно это ж Sedgewick, а не хухры-мухры. Изложение идёт в таком типично Кнутовском стиле c эпиграфами и ссылками в разнообразные области математики.
wvxvw 23.01.2015 15:07 # +1
3.14159265 26.01.2015 13:37 # +2
Книга конечно сложная, но годная.
bormand 23.01.2015 01:21 # 0
З.Ы. Гц и замыкания, емнип, как раз с лиспа притащили (и сколько лет прошло, прежде чем народ перестал считать их ересью и беспонтовый переголовой?). Эрланг вообще для практики запилили серьезные дядьки из телекома.
3.14159265 23.01.2015 01:41 # 0
Ну если набросить куда-нибудь до того как заиндексируется и протухнет, то она ею станет.
Только ссылочку сюда занесёте.
someone 22.01.2015 06:09 # +4
> используя механизм инструкций
Юзая!
Кульный коммент, я аппрувлю и промисю райтить в симилярном стиле.