Math::...Custom(3pm)
π Math::Symbolic::Custom β it's giving aggregate class for tree tests and transformations π
okay bestie, this is Math::...Custom(3pm) from the User Contributed Perl Documentation, and honestly? it's a whole vibe. let's get into it π¦
β¨ SYNOPSIS β¨
no cap, here's how you actually do the thing:
# Extending the class:
package Math::Symbolic::Custom::MyTransformations;
use Math::Symbolic::Custom::Base;
BEGIN {*import = \&Math::Symbolic::Custom::Base::aggregate_import}
our $Aggregate_Export = [qw/apply_transformation1 .../];
sub apply_transformation1 {
# ...
}
# ...
# Using the custom class:
use Math::Symbolic;
use Math::Symbolic::Custom::MyTransformations;
# later...
$tree->apply_transformation1();
$tree->mod_transformation2();
die unless $tree->is_type1();
die unless $tree->test_condition1();
die if $tree->contains_something1();
print $tree->to_latex();
look at her go ππ
π₯ DESCRIPTION π₯
okay so. Math::Symbolic::Custom is the aggregate class β the group chat, if you will β for every custom modification, transformation, testing and output extension for Math::Symbolic trees. she collects them all, she holds them all, she's the main character fr fr.
some default transformations and tests are already implemented in the Math::Symbolic::Custom::DefaultMods and Math::Symbolic::Custom::DefaultTests packages, and the default output routines live in Math::Symbolic::Custom::DefaultDumpers β and guess what bestie, those get automatically loaded by the Math::Symbolic::Custom class. no manual labor required, slay β¨
also, Math::Symbolic::Custom imports all constants from Math::Symbolic::ExportConstants. iconic behaviour honestly.
πΈ EXPORT πΈ
None by default. nope, nothing, nada. you gotta ask for it, bestie π
π¦ EXTENDING THE MODULE π¦
want to make this whole thing even more powerful? obsessed. to extend the functionality of Math::Symbolic, you have to go through the following steps (also peep the synopsis up in this document, it's there for you):
- Choose an appropriate namespace in the
Math::Symbolic::Custom::*hierarchy β or, if you desparately wish (their word, not mine), somewhere else. your call, but the hierarchy is lowkey the move. - Create a new module (probably using
h2xs -AX MODULENAME) and drop the following lines of code in it:
# To make sure we're cooperating with Math::Symbolic's idea of
# method delegation.
use Math::Symbolic::Custom::Base;
BEGIN {*import = \&Math::Symbolic::Custom::Base::aggregate_import}
our $Aggregate_Export = [
# Put the list of method names to be exported.
/];
- Think well about the naming of your exported methods. answer these questions, bestie, for real:
- Does the name start with
'is_','test_','mod_','apply_','contains_', or'to_'? If not, find a suitable name that does. π - Does the name clash with any of the methods exported by
Math::Symbolic::Custom::DefaultTests,Math::Symbolic::Custom::DefaultMods, orMath::Symbolic::Custom::DefaultDumpers? If so, please consider choosing a different name. no one wants that kind of drama π - Does the name map to the idea behind the method prefix (
'is_', ...)? Only methods starting with one of the prefixes listed above can be delegated. Any others will never be called. π The idea behind delegating methods with several prefixes is to provide for a reasonable choice for naming methods.'is_'and'contains_'are meant to be used for accurate tests like"is_constant".'test_'is meant for all tests that either make use of heuristics or can't be fitted into either'is_'or'contains_'.- The prefixes
'mod_'and'apply_'are meant for use with methods that modify the Math::Symbolic tree. - Finally, the prefix
'to_'is meant to be used with conversion and output methods like'to_latex'or'to_string'. (Though as of version 0.122,to_stringis implemented in the core Math::Symbolic modules. just so you know π )
- Does the name start with
- Make sure you document exactly what your methods do. Do they modify the Math::Symbolic tree in-place, or do they clone using the
new()constructor and return a copy? Make sure you mention the behaviour in the docs. your future self will thank you π«Ά - Consider packaging your extensions as a CPAN distribution to help others in their development with Math::Symbolic. If you think the extensions are generic enough to be a worthwhile addition to the core distribution, try sending your extensions to the Math::Symbolic developers mailing list instead. sharing is caring, bestie π
- Load your extension module after loading the Math::Symbolic module. order matters, periodt.
- Start using your custom enhancements as methods to the Math::Symbolic trees (any term types). go off β¨
- Send bug reports and feedback to the Math::Symbolic support mailing list. π
π AUTHOR π
Please send feedback, bug reports, and support requests to the Math::Symbolic support mailing list: math-symbolic-support at lists dot sourceforge dot net. Please consider letting us know how you use Math::Symbolic. Thank you. π«Ά
If you're interested in helping with the development or extending the module's functionality, please contact the developers' mailing list: math-symbolic-develop at lists dot sourceforge dot net.
List of contributors β the icons, the legends, the main characters:
Steffen MΓΌller, symbolic-module at steffen-mueller dot net
Stray Toaster, mwk at users dot sourceforge dot net
Oliver EbenhΓΆh
π SEE ALSO π
New versions of this module can be found on http://steffen-mueller.net or CPAN. The module development takes place on Sourceforge at http://sourceforge.net/projects/math-symbolic/
Math::Symbolic::Custom::BaseMath::Symbolic::Custom::DefaultTestsMath::Symbolic::Custom::DefaultModsMath::Symbolic::Custom::DefaultDumpersMath::Symbolic
and of course the big one herself: Math::Symbolic π
k that's the whole page bestie, no notes, she ate π
β¨ This one's running on <pink>perl v5.40.0</pink> and was last touched on <pink>2024-09-16</pink> β love that for her. bye bestie, go write some transformations π¦π
π¦ where this page comes from
- ubuntu resolute: libmath-symbolic-perl 0.613-1 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- ubuntu stonking: libmath-symbolic-perl 0.613-1 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms