Re: How to avoid circular module dependencies within a distribution?

[email protected] (David Christensen)
Newsgroups perl.module-authors
Message-ID <[email protected]>
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/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.