On 10/18/2016 04:53 PM, James E Keenan wrote:
> At this point I feel compelled to ask:
> 
> Why?
> 
> Why do you want to design a library with so many exportable subroutines
> and (worse!) constants?
> 
> Now, I concede that the statements above are merely background for your
> questions about circular dependencies.  So my questions run the risk of
> sending discussion off in a different direction.  And we don't yet have
> your code to look at.
> 
> But, on the basis of the experiences of the Perl 5 Porters in
> maintaining POSIX.pm -- which suffers from these problems, see
> http://search.cpan.org/~rjbs/perl-5.24.0/ext/POSIX/lib/POSIX.pod#CAVEATS
> -- I would be reluctant to use any library with a large number of
> exportable symbols and consequent risk of namespace pollution.

Thank you for your reply.


If you can recommend a module included in base Perl that includes the
ASCII character set in the following form, I would be happy to eliminate
128 of my constants:

    use constant NUL                        => chr   0;
    use constant SOH                        => chr   1;
    use constant STX                        => chr   2;
    ...
    use constant DEL                        => chr 127;


Same for these:

    use constant EMPTY_STRING               => '';
    use constant FALSE                      => '';
    use constant NAMESEP                    => '::';
    use constant TRUE                       => 1;
    use constant UNDEF                      => undef;


But you asked, "Why?":

    2016-10-18 18:20:59 dpchrist@t7400 ~/sandbox/perl
    $ cat constants-as-coderefs.pl
    #!/usr/bin/perl
    use strict;
    use warnings;
    use constant FOO => 'foo';
    sub takes_coderef { print $_[0]->(), "\n" }
    my $rc = \&FOO;
    takes_coderef($rc);

    2016-10-18 18:21:02 dpchrist@t7400 ~/sandbox/perl
    $ perl constants-as-coderefs.pl
    foo


I'm experimenting with ideas from HOP [1], and coderefs are of primary
importance.


David

[1] http://hop.perl.plover.com/

Reply via email to