Acme-Lambda-Expr

 view release on metacpan or  search on metacpan

inc/Module/Install.pm  view on Meta::CPAN

	close FH or die "close($_[0]): $!";
}

# _version is for processing module versions (eg, 1.03_05) not
# Perl versions (eg, 5.8.1).

sub _version ($) {
	my $s = shift || 0;
	   $s =~ s/^(\d+)\.?//;
	my $l = $1 || 0;
	my @v = map { $_ . '0' x (3 - length $_) } $s =~ /(\d{1,3})\D?/g;
	   $l = $l . '.' . join '', @v if @v;
	return $l + 0;
}

# Cloned from Params::Util::_CLASS
sub _CLASS ($) {
	(
		defined $_[0]
		and
		! ref $_[0]

inc/Module/Install/MakeMaker.pm  view on Meta::CPAN

	$ISCORE  = 1;
	@ISA     = qw{Module::Install::Base};
}

my $makefile;

sub WriteMakefile {
    my ($self, %args) = @_;
    $makefile = $self->load('Makefile');

    # mapping between MakeMaker and META.yml keys
    $args{MODULE_NAME} = $args{NAME};
    unless ( $args{NAME} = $args{DISTNAME} or ! $args{MODULE_NAME} ) {
        $args{NAME} = $args{MODULE_NAME};
        $args{NAME} =~ s/::/-/g;
    }

    foreach my $key ( qw{name module_name version version_from abstract author installdirs} ) {
        my $value = delete($args{uc($key)}) or next;
        $self->$key($value);
    }

inc/Module/Install/Makefile.pm  view on Meta::CPAN

	if ( $self->tests ) {
		die "tests_recursive will not work if tests are already defined";
	}
	my $dir = shift || 't';
	unless ( -d $dir ) {
		die "tests_recursive dir '$dir' does not exist";
	}
	%test_dir = ();
	require File::Find;
	File::Find::find( \&_wanted_t, $dir );
	$self->tests( join ' ', map { "$_/*.t" } sort keys %test_dir );
}

sub write {
	my $self = shift;
	die "&Makefile->write() takes no arguments\n" if @_;

	# Make sure we have a new enough
	require ExtUtils::MakeMaker;

	# MakeMaker can complain about module versions that include

inc/Module/Install/Makefile.pm  view on Meta::CPAN

	if ( eval($ExtUtils::MakeMaker::VERSION) > 6.17 and $self->sign ) {
		$args->{SIGN} = 1;
	}
	unless ( $self->is_admin ) {
		delete $args->{SIGN};
	}

	# merge both kinds of requires into prereq_pm
	my $prereq = ($args->{PREREQ_PM} ||= {});
	%$prereq = ( %$prereq,
		map { @$_ }
		map { @$_ }
		grep $_,
		($self->configure_requires, $self->build_requires, $self->requires)
	);

	# Remove any reference to perl, PREREQ_PM doesn't support it
	delete $args->{PREREQ_PM}->{perl};

	# merge both kinds of requires into prereq_pm
	my $subdirs = ($args->{DIR} ||= []);
	if ($self->bundles) {

inc/Module/Install/Makefile.pm  view on Meta::CPAN

	}

	if ( my $perl_version = $self->perl_version ) {
		eval "use $perl_version; 1"
			or die "ERROR: perl: Version $] is installed, "
			. "but we need version >= $perl_version";
	}

	$args->{INSTALLDIRS} = $self->installdirs;

	my %args = map { ( $_ => $args->{$_} ) } grep {defined($args->{$_})} keys %$args;

	my $user_preop = delete $args{dist}->{PREOP};
	if (my $preop = $self->admin->preop($user_preop)) {
		foreach my $key ( keys %$preop ) {
			$args{dist}->{$key} = $preop->{$key};
		}
	}

	my $mm = ExtUtils::MakeMaker::WriteMakefile(%args);
	$self->fix_up_makefile($mm->{FIRST_MAKEFILE} || 'Makefile');

inc/Module/Install/Metadata.pm  view on Meta::CPAN

		$self->{values}{$key} = shift;
		return $self;
	};
}

foreach my $key ( @resource_keys ) {
	*$key = sub {
		my $self = shift;
		unless ( @_ ) {
			return () unless $self->{values}{resources};
			return map  { $_->[1] }
			       grep { $_->[0] eq $key }
			       @{ $self->{values}{resources} };
		}
		return $self->{values}{resources}{$key} unless @_;
		my $uri = shift or die(
			"Did not provide a value to $key()"
		);
		$self->resources( $key => $uri );
		return 1;
	};

inc/Module/Install/Metadata.pm  view on Meta::CPAN

	my $self = shift;
	while ( @_ ) {
		my $module  = shift or last;
		my $version = shift || 0;
		push @{ $self->{values}{bundles} }, [ $module, $version ];
	}
	$self->{values}{bundles};
}

# Resource handling
my %lc_resource = map { $_ => 1 } qw{
	homepage
	license
	bugtracker
	repository
};

sub resources {
	my $self = shift;
	while ( @_ ) {
		my $name  = shift or last;

inc/Module/Install/Metadata.pm  view on Meta::CPAN

		# The user used ->feature like ->features by passing in the second
		# argument as a reference.  Accomodate for that.
		$mods = $_[0];
	} else {
		$mods = \@_;
	}

	my $count = 0;
	push @$features, (
		$name => [
			map {
				ref($_) ? ( ref($_) eq 'HASH' ) ? %$_ : @$_ : $_
			} @$mods
		]
	);

	return @$features;
}

sub features {
	my $self = shift;

lib/Acme/Lambda/Expr/Bound.pm  view on Meta::CPAN

	is  => 'ro',
	isa => 'Acme::Lambda::Expr::Term',

	required => 1,
);

sub deparse{
	my($self) = @_;
	return sprintf 'sub{ %s }->(%s)',
		$self->function->deparse,
		join q{, }, map{ $_->deparse } $self->args;
}
sub stringify{
	my($self) = @_;

	return sprintf 'curry(%s, %s)',
		$self->function,
		join q{, }, $self->args;
}

sub codify{
	my($self) = @_;

	my $function = $self->function;
	my @args     = $self->args;

	return sub{
		@_ = map{ &{$_} } @args;
		goto &{$function};
	};
}

__PACKAGE__->meta->make_immutable();

lib/Acme/Lambda/Expr/Function.pm  view on Meta::CPAN

sub get_code_info{
	my($self) = @_;
	return Data::Util::get_code_info($self->function);
}

sub deparse{
	my($self) = @_;

	return sprintf '%s::%s(%s)',
		$self->get_code_info,
		join q{, }, map{ $_->deparse } $self->args;
}
sub stringify{
	my($self) = @_;

	return sprintf 'curry(\&%s::%s, %s)',
		$self->get_code_info,
		join q{, }, $self->args;
}

sub codify{
	my($self) = @_;

	my $function = $self->function;
	my @args     = $self->args;

	return sub{
		@_ = map{ &{$_} } @args;
		goto &{$function};
	};
}

__PACKAGE__->meta->make_immutable();

lib/Acme/Lambda/Expr/Method.pm  view on Meta::CPAN

	coerce   => 1,
	required => 1,
);

sub deparse{
	my($self) = @_;

	return sprintf '%s->%s(%s)',
		$self->invocant->deparse,
		$self->method,
		join q{, }, map{ $_->deparse } $self->args,
	;
}
sub stringify{
	my($self) = @_;

	return sprintf '%s->%s(%s)',
		$self->invocant,
		$self->method,
		join q{, }, $self->args,
	;

lib/Acme/Lambda/Expr/Method.pm  view on Meta::CPAN

sub codify{
	my($self) = @_;

	my $invocant = $self->invocant;
	my $method   = $self->method;
	my @args     = $self->args;

	return sub{
		my $self = &{$invocant};

		$self->$method(map{ &{$_} } @args);
#		if(not defined $self){
#			Carp::croak(qq{Can't call method "$method" on an undefined value});
#		}
#		elsif(Scalar::Util::looks_like_number $self){
#			Carp::croak(qq{Can't call method "$method" without a package or object reference});
#		}
#
#		my $method_entity = $self->can($method);
#
#		if($method_entity){
#			@_ = ($self, map{ &{$_} } @args);
#			goto &{$method_entity};
#		}
#		else{
#			my $pkg = ref($self) ? ref($self) : $self;
#			Carp::croak(qq{Can't locate object method "$method" via package "$pkg"});
#		}
	};
}

__PACKAGE__->meta->make_immutable;

lib/Acme/Lambda/Expr/Proc.pm  view on Meta::CPAN

	is  => 'ro',
	isa => 'ArrayRef',

	initializer => \&_initialize_args,
	auto_deref => 1,

	required => 1,
);
sub _initialize_args{
	my($self, $args) = @_;
	$self->{args} = [ map{ as_lambda_expr($_) } @{$args} ];
	return;
}

__PACKAGE__->meta->make_immutable();

tool/operators.pl  view on Meta::CPAN

		_str_less_eq    => 'le',
		_str_grater     => 'gt',
		_str_grater_eq  => 'ge',
		_str_compare    => 'cmp',

#		'_smart_match' => '~~',
	);

	while(my($name, $binop) = splice @binops, 0, 2){
		my $class_name = 'Acme::Lambda::Expr::'
			. join '', map{ ucfirst } split /_/, $name;

		$src .= <<"SRC";
package $class_name;
use Moose;
extends qw(Acme::Lambda::Expr::BinOp);

sub symbol{
	return q{$binop};
}
sub codify{

tool/operators.pl  view on Meta::CPAN

		_sin   => 'sin',
		_exp   => 'exp',
		_abs   => 'abs',
		_log   => 'log',
		_sqrt  => 'sqrt',
		_int   => 'int',
	);

	while(my($name, $uniop) = splice @uniops, 0, 2){
		my $class_name = 'Acme::Lambda::Expr::'
			. join '', map{ ucfirst } split /_/, $name;

		if($uniop eq 'neg'){
			$uniop = '-';
		}

		$src .= <<"SRC";
package $class_name;
use Moose;
extends qw(Acme::Lambda::Expr::UniOp);



( run in 0.391 second using v1.01-cache-2.11-cpan-65fba6d93b7 )