-
-
21 Aug 2013 14:25:39 UTC
- Distribution: Perl6-Junction
- Module version: 1.60000
- Source (raw)
- Browse (raw)
- Changes
- How to Contribute
- Issues (3)
- Testers (9108 / 1 / 0)
- Kwalitee
Bus factor: 0- 92.02% Coverage
- License: perl_5
- Activity
24 month- Tools
- Download (7.1KB)
- MetaCPAN Explorer
- Permissions
- Subscribe to distribution
- Permalinks
- This version
- Latest version
- Dependencies
- Carp
- Test::More
- and possibly others
- Reverse dependencies
- CPAN Testers List
- Dependency graph
- NAME
- SYNOPSIS
- DESCRIPTION
- SUBROUTINES
- ALTERING JUNCTIONS
- EXPORT
- WARNING
- TO DO
- SUPPORT / BUGS
- SEE ALSO
- AUTHOR
- ACKNOWLEDGEMENTS
- COPYRIGHT AND LICENSE
NAME
Perl6::Junction - Perl6 style Junction operators in Perl5.
SYNOPSIS
use Perl6::Junction qw/ all any none one /; if (any(@grant) eq 'su') { ... } if (all($foo, $bar) >= 10) { ... } if (qr/^\d+$/ == all(@answers)) { ... } if (all(@input) <= @limits) { ... } if (none(@pass) eq 'password') { ... } if (one(@answer) == 42) { ... }
DESCRIPTION
This is a lightweight module which provides 'Junction' operators, the most commonly used being
any
andall
.Inspired by the Perl6 design docs, http://dev.perl.org/perl6/doc/design/exe/E06.html.
Provides a limited subset of the functionality of Quantum::Superpositions, see "SEE ALSO" for comment.
Notice in the "SYNOPSIS" above, that if you want to match against a regular expression, you must use
==
or!=
. Not=~
or!~
. You must also use a regex object, such asqr/\d/
, not a plain regex such as/\d/
.SUBROUTINES
all()
Returns an object which overloads the following operators:
'<', '<=', '>', '>=', '==', '!=', 'lt', 'le', 'gt', 'ge', 'eq', 'ne',
Returns true only if all arguments test true according to the operator used.
any()
Returns an object which overloads the following operators:
'<', '<=', '>', '>=', '==', '!=', 'lt', 'le', 'gt', 'ge', 'eq', 'ne',
Returns true if any argument tests true according to the operator used.
none()
Returns an object which overloads the following operators:
'<', '<=', '>', '>=', '==', '!=', 'lt', 'le', 'gt', 'ge', 'eq', 'ne',
Returns true only if no argument tests true according to the operator used.
one()
Returns an object which overloads the following operators:
'<', '<=', '>', '>=', '==', '!=', 'lt', 'le', 'gt', 'ge', 'eq', 'ne',
Returns true only if one and only one argument tests true according to the operator used.
ALTERING JUNCTIONS
You cannot alter junctions. Instead, you can create new junctions out of old junctions. You can do this by calling the
values
method on a junction.my $numbers = any(qw/1 2 3 4 5/); print $numbers == 3 ? 'Yes' : 'No'; # Yes $numbers = any( grep { $_ != 3 } $numbers->values ); print $numbers == 3 ? 'Yes' : 'No'; # No
EXPORT
'all', 'any', 'none', 'one', as requested.
All subroutines can be called by its fully qualified name, if you don't want to export them.
use Perl6::Junction; if (Perl6::Junction::any( @questions )) { ... }
WARNING
When comparing against a regular expression, you must remember to use a regular expression object:
qr/\d/
Not/d/
. You must also use either==
or!=
. This is because=~
and!~
cannot be overriden.TO DO
Add overloading for arithmetic operators, such that this works:
$result = any(2,3,4) * 2; if ($result == 8) {...}
SUPPORT / BUGS
Submit to the CPAN bugtracker http://rt.cpan.org
SEE ALSO
Quantum::Superpositions provides the same functionality as this, and more. However, this module provides this limited functionality at a much greater runtime speed, with my benchmarks showing between 500% and 6000% improvment.
http://dev.perl.org/perl6/doc/design/exe/E06.html - "The Wonderful World of Junctions".
AUTHOR
Carl Franks
ACKNOWLEDGEMENTS
Thanks to
Curtis "Ovid" Poe
for the "ALTERING JUNCTIONS" changes in release0.40000
.COPYRIGHT AND LICENSE
Copyright 2005, Carl Franks. All rights reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself (perlgpl, perlartistic).
Module Install Instructions
To install Perl6::Junction, copy and paste the appropriate command in to your terminal.
cpanm Perl6::Junction
perl -MCPAN -e shell install Perl6::Junction
For more information on module installation, please visit the detailed CPAN module installation guide.