LINUX.ORG.RU

Ответ на: комментарий от phoenix

Красиво. А еще что-нибудь есть?Например сопоставление с образцом. Интересно посмотреть на возможности perl в данной области.

anonymous
()
Ответ на: комментарий от phoenix

Вот еще из Холзнера про клозурики интересная заметка(жалко больше ничего такого там нет).
Создание функций на основе шаблонов
Замыкания можно использовать для создания шаблонов функций, позволяющих создавать и настраивать пользовательские функции в процессе работы сценария.
Рассмотрим пример. Мы будем использовать шаблон для создания трех новых функций — printHello, printHi и printGreetings. Они будут выводить, соответственно, строки «Hello», «hi» и «Greetings». Начнем с того, что запомним эти строки в массиве:
@gretings = ("Hello", "Hi", "Greetings");
Далее, мы выполним цикл foreach по элементам массива с использованием лексической переменной в качестве индекса (чтобы использовать замыкания, необходимы лексические переменные — см. предыдущий раздел). На каждой итерации цикла создается непоименованная функция, использующая очередной элемент массива @greetings, и запись таблицы символов (тип данных typeglob) для этой функции:
foreach my $term (@greetings) {
*{"print" . $term} = sub {print "$term\n"};
}
Теперь можно вызывать созданные на основе шаблона пользовательские функции printHello, printHi и printGreetings:
printHello();
printHi();
printGreetings();
Hello
Hi
Greetings
Так и работают шаблоны функций. Если бы мы просто запомнили ссылки на анонимные подпрограммы в подходящих скалярных переменных:
foreach my $term (@greetings) {
${"print" . $term} = sub {print "$term\n"};
}
то могли вызывать эти подпрограммы через разыменовывания ссылок, а не как «истинные» подпрограммы:
&$printHello();
&$printHi();
&$printGreetings();
Hello
Hi
Greetings

anonymous
()
Ответ на: комментарий от anonymous

Блин двлйные кавычки в трубу улетели. Ладно вроде и так понятно...

anonymous
()
Ответ на: комментарий от phoenix

По моему единственное приличное что есть это книжка http://perl.plover.com/book/ . В инете pdf валяется. Сейчас читать начинаю.

anonymous
()
Ответ на: комментарий от phoenix

>> Э? :)

>"функциональный" как в "функциональных язык" :) из примера вроде достаточно ясно.

Тогда боюсь все плохо. Временами попадаются статьи, но что бы "много-и-в-одном-месте" пока не видел. Посмотрим предложенные книги.

roller ★★★
()

Ну Higher-Order Perl тебе уже посоветовали.

А так - перл вполне себе функциональный язык.

Лямбда - есть (

my $add = sub {$_[0] + $_[1]}; print $add->(1,2);

), замыкания есть. Даже map/grep встроенные есть.

А, да, еще есть List::Util, там много полезностей для обработки списков (max/min/first/reduce).

anonymous
()
Ответ на: комментарий от anonymous

извини это я сам себе посоветовал HOP после копания инета:))По поводу List::Util спасибо посмотрим.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.