commit 6688733d62b6672ce721a1ea545a2aa2c2570b75 Author: Petr PÃsaÅ <ppisar@xxxxxxxxxx> Date: Wed Jun 15 15:22:41 2011 +0200 Import .gitignore | 1 + ...nal-0.04-Fix-any-and-all-on-infinite-list.patch | 61 ++++++++++++++++++++ perl-Language-Functional.spec | 58 +++++++++++++++++++ sources | 1 + 4 files changed, 121 insertions(+), 0 deletions(-) --- diff --git a/.gitignore b/.gitignore index e69de29..53df3ee 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +/Language-Functional-0.04.tar.gz diff --git a/perl-Language-Functional-0.04-Fix-any-and-all-on-infinite-list.patch b/perl-Language-Functional-0.04-Fix-any-and-all-on-infinite-list.patch new file mode 100644 index 0000000..1aecf01 --- /dev/null +++ b/perl-Language-Functional-0.04-Fix-any-and-all-on-infinite-list.patch @@ -0,0 +1,61 @@ +From 73c916ba63070d9076b1286220ea7544d24925bc Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@xxxxxxxxxx> +Date: Tue, 14 Jun 2011 18:19:25 +0200 +Subject: [PATCH] Fix any() and all() on infinite list + +--- + Functional.pm | 31 ++++++++++++++++++++++++------- + 1 files changed, 24 insertions(+), 7 deletions(-) + +diff --git a/Functional.pm b/Functional.pm +index 78cfadd..493979c 100644 +--- a/Functional.pm ++++ b/Functional.pm +@@ -1320,9 +1320,18 @@ In Haskell: + + sub any(&$) { + my($p, $xs) = @_; +- map { +- return 1 if $p->($_); +- } @{$xs}; ++ my $n = 0; ++ my $size = $#{$xs}; ++ while ($n <= $size) { ++ return 1 if $p->($xs->[$n]); ++ $n++; ++ } ++ if ($size == $Language::Functional::INFINITE ++ or $size == $Language::Functional::INFINITE - 1 ++ ) { ++ confess "Evaluating predicate on inifinite number of elements " . ++ "would never end!"; ++ } + return 0; + } + +@@ -1345,10 +1354,18 @@ In Haskell: + + sub all(&$) { + my($p, $xs) = @_; +- map { +- my $x = $_; +- return 0 if not $p->($x); +- } @{$xs}; ++ my $n = 0; ++ my $size = $#{$xs}; ++ while ($n <= $size) { ++ return 0 if not $p->($xs->[$n]); ++ $n++; ++ } ++ if ($size == $Language::Functional::INFINITE ++ or $size == $Language::Functional::INFINITE - 1 ++ ) { ++ confess "Evaluating predicate on inifinite number of elements " . ++ "would never end!"; ++ } + return 1; + } + +-- +1.7.5.4 + diff --git a/perl-Language-Functional.spec b/perl-Language-Functional.spec new file mode 100644 index 0000000..9945eee --- /dev/null +++ b/perl-Language-Functional.spec @@ -0,0 +1,58 @@ +Name: perl-Language-Functional +Version: 0.04 +Release: 1%{?dist} +Summary: Module which makes Perl slightly more functional +License: GPL+ or Artistic +Group: Development/Libraries +URL: http://search.cpan.org/dist/Language-Functional/ +Source0: http://www.cpan.org/authors/id/L/LB/LBROCARD/Language-Functional-%{version}.tar.gz +#CPAN RT #20698 +Patch0: %{name}-0.04-Fix-any-and-all-on-infinite-list.patch +BuildArch: noarch +BuildRequires: perl(ExtUtils::MakeMaker) +# Tests: +BuildRequires: perl(Exporter) +BuildRequires: perl(Test) +BuildRequires: perl(Test::More) +BuildRequires: perl(Test::Pod) >= 1.14 +BuildRequires: perl(Tie::Array) +Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) + +%{?filter_setup: +%filter_from_provides /^perl(InfiniteList)/d +%filter_setup +} + +%description +Perl already contains some functional-like functions, such as map and grep. +The purpose of this module is to add other functional-like functions to +Perl, such as foldl and foldr, as well as the use of infinite lists. + +%prep +%setup -q -n Language-Functional-%{version} +%patch0 -p1 -b .fix_any_all + +%build +%{__perl} Makefile.PL INSTALLDIRS=vendor +make %{?_smp_mflags} + +%install +make pure_install PERL_INSTALL_ROOT=$RPM_BUILD_ROOT +find $RPM_BUILD_ROOT -type f -name .packlist -exec rm -f {} \; +find $RPM_BUILD_ROOT -depth -type d -exec rmdir {} 2>/dev/null \; +%{_fixperms} $RPM_BUILD_ROOT/* + +%check +make test + +%files +%doc CHANGES README +%{perl_vendorlib}/* +%{_mandir}/man3/* + +%changelog +* Tue Jun 14 2011 Petr Pisar <ppisar@xxxxxxxxxx> 0.04-1 +- Specfile autogenerated by cpanspec 1.78. +- Remove BuildRoot and defattr stuff +- Do not provides private module InfiniteList +- Fix any() and all() implementation (CPAN RT #20698) diff --git a/sources b/sources index e69de29..e2fb922 100644 --- a/sources +++ b/sources @@ -0,0 +1 @@ +6eb8a6ae99971ad3c8dfa3bd88792710 Language-Functional-0.04.tar.gz -- Fedora Extras Perl SIG http://www.fedoraproject.org/wiki/Extras/SIGs/Perl perl-devel mailing list perl-devel@xxxxxxxxxxxxxxxxxxxxxxx https://admin.fedoraproject.org/mailman/listinfo/perl-devel