From kes-kes at yandex.ru Wed Apr 19 00:17:49 2017 From: kes-kes at yandex.ru (KES) Date: Wed, 19 Apr 2017 10:17:49 +0300 Subject: [Kiev-pm] =?utf-8?b?U29mdCBjYWxsIG9wZXJhdG9yICjQntC/0LXRgNCw0YI=?= =?utf-8?b?0L7RgCDQvNGP0LPQutC+0LPQviDQstGL0LfQvtCy0LApOiB+Pg==?= Message-ID: <2654291492586269@web57g.yandex.ru> Привет. А у меня вот давно витает идея "мягкого вызова". Даже ещё когда писал на ассемблере всегда раздражали исключения при `CALL 0` ну вот снова вернулся к этой теме. 1. Что не так? Очень часто приходится писать следующий код: my $x; my $y; if( ($x = $obj->method) && $y = $x->another_method ) { $y = ...; } Пример из жизни: if( $db->query( ... )->hash->{ value } ) { ... } if( $db->resultset( 'table' )->search( ... )->related_resultset( 'table2' ) { ... } тут если запрос вернул пустой результат, то код упадёт. А если использовать оператор мягкого вызова, то можно будет не бояться исключений и код станет проще: use pragma 'soft_call'; if( my $x = $obj->method~>another_method ) { ... } if( $db->query( ... )~>hash->{ value } ) { ... } if( $db->resultset( 'table' )->search( ... )~>related_resultset( 'table2' ) { ... } И вроде как всё выразительно получается. Даже сама реализация прагмы в десяток строк: 1. делаем плагин для keyword, Наподобие Syntax::Keyword::Try 2. цепляемся на http://perldoc.perl.org/perlguts.html#Pluggable-runops 3. Псевдокод: sub soft_call_operator { my( $left_operand, $right_operand ) = @_; return undef if !defined $left_operand; '->'( $left_operand, $right_operand ); # делаем обычную обработку вызова функции } Комментарии wellcome From dshadowukraine at gmail.com Wed Apr 19 00:22:10 2017 From: dshadowukraine at gmail.com (Konstantin Cherednichenko) Date: Wed, 19 Apr 2017 10:22:10 +0300 Subject: [Kiev-pm] =?utf-8?b?U29mdCBjYWxsIG9wZXJhdG9yICjQntC/0LXRgNCw0YI=?= =?utf-8?b?0L7RgCDQvNGP0LPQutC+0LPQviDQstGL0LfQvtCy0LApOiB+Pg==?= In-Reply-To: <2654291492586269@web57g.yandex.ru> References: <2654291492586269@web57g.yandex.ru> Message-ID: Отличная идея! Спасибо! On Apr 19, 2017 10:19, "KES" wrote: > Привет. > > А у меня вот давно витает идея "мягкого вызова". > Даже ещё когда писал на ассемблере всегда раздражали исключения при `CALL > 0` > > ну вот снова вернулся к этой теме. > > 1. Что не так? > Очень часто приходится писать следующий код: > my $x; my $y; > if( ($x = $obj->method) && $y = $x->another_method ) { > $y = ...; > } > > Пример из жизни: > > if( $db->query( ... )->hash->{ value } ) { ... } > if( $db->resultset( 'table' )->search( ... )->related_resultset( 'table2' > ) { ... } > > > тут если запрос вернул пустой результат, то код упадёт. > > А если использовать оператор мягкого вызова, то можно будет не бояться > исключений и код станет проще: > > use pragma 'soft_call'; > if( my $x = $obj->method~>another_method ) { ... } > if( $db->query( ... )~>hash->{ value } ) { ... } > if( $db->resultset( 'table' )->search( ... )~>related_resultset( 'table2' > ) { ... } > > И вроде как всё выразительно получается. > > Даже сама реализация прагмы в десяток строк: > 1. делаем плагин для keyword, Наподобие Syntax::Keyword::Try > 2. цепляемся на http://perldoc.perl.org/perlguts.html#Pluggable-runops > 3. Псевдокод: > sub soft_call_operator { > my( $left_operand, $right_operand ) = @_; > > return undef if !defined $left_operand; > > '->'( $left_operand, $right_operand ); # делаем обычную обработку > вызова функции > } > > > Комментарии wellcome > _______________________________________________ > Kiev-pm mailing list > Kiev-pm at pm.org > http://mail.pm.org/mailman/listinfo/kiev-pm > -------------- next part -------------- An HTML attachment was scrubbed... URL: From kes-kes at yandex.ru Wed Apr 19 00:56:59 2017 From: kes-kes at yandex.ru (KES) Date: Wed, 19 Apr 2017 10:56:59 +0300 Subject: [Kiev-pm] =?utf-8?b?U29mdCBjYWxsIG9wZXJhdG9yICjQntC/0LXRgNCw0YI=?= =?utf-8?b?0L7RgCDQvNGP0LPQutC+0LPQviDQstGL0LfQvtCy0LApOiB+Pg==?= In-Reply-To: References: <2654291492586269@web57g.yandex.ru> Message-ID: <2930551492588619@web23m.yandex.ru> An HTML attachment was scrubbed... URL: From theathlet at yandex.ru Wed Apr 19 01:08:52 2017 From: theathlet at yandex.ru (=?utf-8?B?0JrQvtCy0LDQu9GMINCS0Y/Rh9C10YHQu9Cw0LI=?=) Date: Wed, 19 Apr 2017 09:08:52 +0100 Subject: [Kiev-pm] =?utf-8?q?=5BMoscow=2Epm=5D__Soft_call_operator_=28?= =?utf-8?b?0J7Qv9C10YDQsNGC0L7RgCDQvNGP0LPQutC+0LPQviDQstGL0LfQvtCy?= =?utf-8?b?0LApOiB+Pg==?= In-Reply-To: References: <2654291492586269@web57g.yandex.ru> Message-ID: <3166791492589332@web29g.yandex.ru> An HTML attachment was scrubbed... URL: From steffen at steffen-winkler.de Wed Apr 19 01:20:02 2017 From: steffen at steffen-winkler.de (Steffen Winkler) Date: Wed, 19 Apr 2017 10:20:02 +0200 Subject: [Kiev-pm] =?utf-8?b?U29mdCBjYWxsIG9wZXJhdG9yICjQntC/0LXRgNCw0YI=?= =?utf-8?b?0L7RgCDQvNGP0LPQutC+0LPQviDQstGL0LfQvtCy0LApOiB+Pg==?= In-Reply-To: <2930551492588619@web23m.yandex.ru> References: <2654291492586269@web57g.yandex.ru> <2930551492588619@web23m.yandex.ru> Message-ID: Hello together, This days I moved Try::Chain from our project to CPAN. The problem was, fetching database results, sometimes mapped in hashes or arrays. Then long chains is the result and this chains can break 1 or more times. Is pragma 'soft_call'; already working? Regards Steffen. Am 19.04.2017 um 09:56 schrieb KES: > завсегдатаи подсказали: http://www.perlmonks.org/?node_id=973015 > > > 19.04.2017, 10:23, "Konstantin Cherednichenko" : >> Отличная идея! Спасибо! >> >> On Apr 19, 2017 10:19, "KES" > > wrote: >> >> Привет. >> >> А у меня вот давно витает идея "мягкого вызова". >> Даже ещё когда писал на ассемблере всегда раздражали исключения >> при `CALL 0` >> >> ну вот снова вернулся к этой теме. >> >> 1. Что не так? >> Очень часто приходится писать следующий код: >> my $x; my $y; >> if( ($x = $obj->method) && $y = $x->another_method ) { >> $y = ...; >> } >> >> Пример из жизни: >> >> if( $db->query( ... )->hash->{ value } ) { ... } >> if( $db->resultset( 'table' )->search( ... )->related_resultset( >> 'table2' ) { ... } >> >> >> тут если запрос вернул пустой результат, то код упадёт. >> >> А если использовать оператор мягкого вызова, то можно будет не >> бояться исключений и код станет проще: >> >> use pragma 'soft_call'; >> if( my $x = $obj->method~>another_method ) { ... } >> if( $db->query( ... )~>hash->{ value } ) { ... } >> if( $db->resultset( 'table' )->search( ... )~>related_resultset( >> 'table2' ) { ... } >> >> И вроде как всё выразительно получается. >> >> Даже сама реализация прагмы в десяток строк: >> 1. делаем плагин для keyword, Наподобие Syntax::Keyword::Try >> 2. цепляемся на >> http://perldoc.perl.org/perlguts.html#Pluggable-runops >> >> 3. Псевдокод: >> sub soft_call_operator { >> my( $left_operand, $right_operand ) = @_; >> >> return undef if !defined $left_operand; >> >> '->'( $left_operand, $right_operand ); # делаем обычную >> обработку вызова функции >> } >> >> >> Комментарии wellcome >> _______________________________________________ >> Kiev-pm mailing list >> Kiev-pm at pm.org >> http://mail.pm.org/mailman/listinfo/kiev-pm >> >> >> , >> >> _______________________________________________ >> Kiev-pm mailing list >> Kiev-pm at pm.org >> http://mail.pm.org/mailman/listinfo/kiev-pm >> > > > _______________________________________________ > Kiev-pm mailing list > Kiev-pm at pm.org > http://mail.pm.org/mailman/listinfo/kiev-pm -------------- next part -------------- An HTML attachment was scrubbed... URL: From akzhan.abdulin at gmail.com Sat Apr 22 12:30:31 2017 From: akzhan.abdulin at gmail.com (Akzhan Abdulin) Date: Sat, 22 Apr 2017 22:30:31 +0300 Subject: [Kiev-pm] Your company project in Modern Perl Message-ID: Hello, Just note about in-process modern Perl project boilerplate . Feedback welcome. With best wishes, Akzhan. -------------- next part -------------- An HTML attachment was scrubbed... URL: From akzhan.abdulin at gmail.com Sat Apr 22 12:31:38 2017 From: akzhan.abdulin at gmail.com (Akzhan Abdulin) Date: Sat, 22 Apr 2017 22:31:38 +0300 Subject: [Kiev-pm] Your company project in Modern Perl In-Reply-To: References: Message-ID: Oops, forget to mention about https://t.me/modernperl 2017-04-22 22:30 GMT+03:00 Akzhan Abdulin : > Hello, > > Just note about in-process modern Perl project boilerplate > . > > Feedback welcome. > > With best wishes, > Akzhan. > > -------------- next part -------------- An HTML attachment was scrubbed... URL: