utros 22.05.2012 12:28

Хочу оператор eat, который бы подавлял исключение вызываемой команды, чтобы вместо

try:
somefunc(arg, kwarg=123)
except:
pass

писать

eat:
somefunction(arg, kwarg=123)

или даже

eat(somefunction, arg, kwarg=123)

1. DZhon 22.05.2012 12:47

этот ваш пистон не умеет в макросы ?

2. ak3n 22.05.2012 12:50

Декоратор может?

3. rapture 22.05.2012 13:24 unknown

or die

4. utrosDZhon /1 22.05.2012 13:55 pedobook

Без особых костылей не умеет.
Правда он интерпретируемый и макросы там как собаке пятая лапа.

5. utrosak3n /2 22.05.2012 13:56 pedobook

Что-то я не помню, чтобы можно было декорировать _вызов_ функции.

6. utrosrapture /3 22.05.2012 13:56 pedobook

Это как-раз наоборот.

7. ak3nutros /5 22.05.2012 14:00 mcabber.78fad556

А если передавать функцию в декорированную функцию?

8. 2538 22.05.2012 14:01

грабь убивай замалчивай ошибки

9. rapture2538 /8 22.05.2012 14:02 unknown

функция должна нахываться "подавись"

10. kb 22.05.2012 14:03

я писал декоратор @pokemon.

11. kbkb /10 22.05.2012 14:03

(для этих целей)

12. kbkb /10 22.05.2012 14:05

поскольку никто не проявил интерес — объясню причину названия: http://www.dodgycoder.net/2011/11/yoda-c...

(см. пункт 2)

13. utrosak3n /7 22.05.2012 14:43 pedobook

Ну последний юз-кейс кстати, легко реализуется, да и безо всяких декораторов.
Вообще, я посмотрел свой кот и понял чего конкретно хочу: что-то вроде try-except, но после перехвата эксепшна переходящее к следующей строчке в блоке, вместо того, чтобы выходить из него.

14. arts 22.05.2012 15:03

Пеши на похапе, там есть @

15. utrosarts /14 22.05.2012 15:04 pedobook

Вот оно мне как раз и нужно. Только в питухоне.

16. kbarts /14 22.05.2012 15:04 c8541125

а еще там есть include, require, include_once, require_once. вообще охуеть.

17. 238328 22.05.2012 17:42 12768289091337706472142447

у тебя же она в виде обычной функции, возьми и сделай

18. utros238328 /17 22.05.2012 17:48 pedobook

/13

19. 238328utros /13 22.05.2012 17:57

эксепшн — это не то, что тебе надо в данном случае. Поблевал с твоей архитектуры

20. utros238328 /19 22.05.2012 18:01 pedobook

Ты нихуя не понял. Видишь там на горе возвышается крест? Повиси-ка на нём, а когда надоест, возвращайся назад, разговаривать про архитектуру и питон со мной.

21. 238328utros /20 22.05.2012 18:03 12768289091337706472142447

VAUTE AT'OH TEEBEH PREEPIUQLO

22. DZhonutros /4 22.05.2012 19:02

тогда делаешь частичное применение через связывание лямбдой, чтобы связать все параметры, делаешь класс/функцию, который/ая конструируется на основе функтора без аргументов и дергает его в ограждении pass.

Как-то так на кэмле было бы:

let eat f = try f () with _ → () ;;
let g x = failwith "BOO!" ;;
eat (fun () → g 4) ;;

23. utrosDZhon /22 22.05.2012 19:09 pedobook

Даже не зная, что ты пишешь на крестах, я бы догадался...
Это совсем костыли, тут выше предлагали проще.

24. DZhonutros /23 22.05.2012 19:20

Эта лямбда чудесно инлайнится почти любым нормальным концпелятром, а кроме того, решение логично вписывается в концепции ФЯП.

25. utrosDZhon /24 22.05.2012 19:30 pedobook

Питон ни разу не ФЯ и там такие костыли очень дорого обойдутся.

26. utrosDZhon /24 22.05.2012 19:31 pedobook

> концпелятром
Успокойся!

27. rapture 22.05.2012 19:31 unknown

Питон сам костыль, так что еще один экземпляр в ряду погоды не делает.

28. DZhonutros /25 22.05.2012 19:31

Ну да, питонисты соснули, как всегда :)

29. DZhonutros /26 22.05.2012 19:32

А что, а PyPy с житом ?

30. utrosrapture /27 22.05.2012 19:36 pedobook

Костыль, но обычно единственный у меня в коде :)

31. utrosDZhon /29 22.05.2012 19:38 pedobook

А он нафиг не нужен пока в нём не запилят FFI/нормальную работу с сишными модулями и нормальную работу с легковесными потоками.
Ну и плюс к тому, конпилятор != джит.

32. DZhonutros /31 22.05.2012 19:48 Azoth

конечно, равенства нет, но нормальные житы умеют в инлайн, инфа 100%.

33. utrosDZhon /32 22.05.2012 19:52 pedobook

Это уже не инлайн ;)

34. DZhonutros /33 22.05.2012 19:53 Azoth

почему inline на уровне IL не является инлайном, ну-ка ?

35. utrosDZhon /34 22.05.2012 19:58 pedobook

Потому, что там нет ключевого слова "inline", очевидно же.
А вообще, это банальный обход мёртвого кода и никакого инлайна в привычном нормальному программисту понимании там не происходит (ну по крайней мере в сферическом JIT'е в вакууме).

36. DZhonutros /35 22.05.2012 19:59 Azoth

какой ты пиздец, U.

37. utrosDZhon /36 22.05.2012 20:03 pedobook

Ггг.

38. dorfe 22.05.2012 20:54

главное что нефть дешёвая

39. dorferapture /9 22.05.2012 20:57

Choke, хороший фильм кстати

40. 238328dorfe /38 22.05.2012 21:19

дваждую

Do you really want to delete ?