package Singleton::Alternate;
use strict;

use Memoize;
memoize('new');

my %singleton = ();

sub new {
    my $class = shift;

    do {
        require Carp;
        Carp::croak ("Incorrect number of arguments; must be (2).");
    } unless 2 == @_;

    my $self = [ $_[1], $_[0] ];
    bless \$self, $class;
}
sub value {
    my $self = shift;
    @$$self = reverse @$$self;
    return $$self->[0];
}
1;
