NAME¶
Coy - like Carp only prettier
SYNOPSIS¶
# In your application:
# ====================
use Coy;
warn "There seems to be a problem";
die "Looks like it might be fatal";
# You can add vocab in the $HOME/.coyrc file:
# ===========================================
noun RESET; # REMOVE EXISTING noun VOCAB
# WORKS FOR OTHER SPECIFIERS TOO
noun {
wookie =>
{
category => [ Sentient ],
sound => [ "roars", "grunts", "bellows" ],
act =>
{
sits => { location => Arborial },
fights => { minimum => 2,
association => "argument",
},
},
},
};
category {
Sentient =>
{
act =>
{
quarrels =>
{
associations => "argument",
location => Terrestrial,
minimum => 2,
synonyms => [qw(bickers argues)],
},
laughs =>
{
associations => "happy",
location => Terrestrial,
non_adjectival => 1,
},
},
}
};
personage "R2D2";
personage "Darth Vader";
place "Mos Eisley";
place "the Death Star";
tree "Alderaan mangrove";
fruit_tree "Wookie-oak";
# You can also select a different syllable counter via .coyrc
# ===========================================================
use Lingua::EN::Syllables::syllable;
syllable_counter "Lingua::EN::Syllables::syllable";
# or
use Lingua::EN::Syllables::syllable;
syllable_counter \&Lingua::EN::Syllables::syllable;
# or
syllable_counter sub { return 1 }; # FAST BUT INACCURATE
DESCRIPTION¶
Error messages
strewn across my terminal.
A vein starts to throb.
Their reproof adds the
injury of insult to
the shame of failure.
When a program dies
what you need is a moment
of serenity.
The Coy.pm
module brings tranquillity
to your debugging.
The module alters
the behaviour of C<die> and
C<warn> (and C<croak> and C<carp>).
It also provides
C<transcend> and C<enlighten> -- two
Zen alternatives.
Like Carp.pm,
Coy reports errors from the
caller's point-of-view.
But it prefaces
the bad news of failure with
a soothing haiku.
The haiku are not
"canned", but are generated
freshly every time.
Once the haiku is
complete, it's prepended to
the error message.
Execution of
the original call to
C<die> or C<warn> resumes.
Haiku and error
message strew across my screen.
A smile starts to form.
EXTENDING THE VOCABULARY¶
Any code placed in
"$ENV{HOME}/.coyrc"
runs at compile-time.
You can use that file
to extend Coy.pm's
vocabulary.
The "SYNOPSIS" at
the start of this POD shows how
you might set it up.
(Eventually
this section will detail the
full mechanism.)
CHANGING THE SYLLABLE COUNTER¶
Real haiku often <BR>
have imperfect syllable<BR>
counts.
The deficiencies of<BR>
Coy's inbuilt counter are thus<BR>
artistic virtues.
But some connoisseurs<BR>
demand their syllable counts<BR>
be always exact.
So if you don't like<BR>
the syllable counter, Coy<BR>
let's you replace it.
Coy provides a sub
called C<syllable_counter> for
that very purpose.
It is passed a sub
reference. That sub is then used
to count syllables.
You can also pass
the sub's I<name> (that is, pass a
symbolic reference).
The new counter sub
should take a string and return
its syllable count.
C<syllable_counter>
can be called from your code, or
from .coyrc.
BUGS AND LIMITATIONS¶
In its current form,
the module has four problems
and limitations:
* Vocabulary:
The list of nouns and verbs is
too small at present.
This limits the range
of topics that the haiku
produced can cover.
That in turn leads to
tell-tale repetition (which
fails the Turing test).
Extending the range
of words Coy.pm can
use is no problem
(though finding the time
and the creativity
required may be :-).
Users of Coy are
encouraged to add their own
vocabulary.
(See the "SYNOPSIS",
and also "EXTENDING THE
VOCABULARY").
* Associations:
The vocabulary has
too few topic links.
Hence it's often not
able to find relevant
words for a message.
This leads to haiku
utterly unrelated
to the error text.
Again, there is no
technical difficulty
in adding more links:
Defining enough
associations isn't
hard, just tedious.
User-specified
vocabularies can solve
this problem as well.
* Limited grammar:
The number of syntactic
templates is too small.
This leads to haiku
that are (structurally, at
least) monotonous.
Yet again, this needs
no technical solution,
just time and effort.
Of course, such enhanced
templates might require richer
vocabulary.
For example, verb
predicates would need extra
database structure:
Each verb entry would
have to be extended with
links to object nouns.
* Syllable counting:
This is perhaps the major
problem at present.
The algorithmic
syllable counter is still
being developed.
It is currently
around 96%
accurate (per word).
This means that correct
syllable counts for haiku
can't be guaranteed.
Syllable counts for
single words are correct to
plus-or-minus 1.
In a multi-word
haiku these errors cancel
out in most cases.
Thus, the haiku tend
to be correct within one
or two syllables.
As the syllable
counter slowly improves, this
problem will abate.
Alteratively,
you can choose to use your own
syllable counter.
(See above in the
section titled "CHANGING THE
SYLLABLE COUNTER".)
AUTHOR¶
The Coy.pm
module was developed by
Damian Conway.
COPYRIGHT¶
Copyright (c) 1998-2000, Damian Conway. All Rights Reserved.
This module is free software. It may be used, redistributed
and/or modified under the terms of the Perl Artistic License
(see http://www.perl.com/perl/misc/Artistic.html)