I got an obvious feature request for Method::Signatures to make it work for normal functions. I haven't stoked mst's brain with enough drugs yet to have Devel::Declare override sub, so it would have to use another name. What would it be?
"def", "fun", "func", "function", "subroutine", "coke" (ya know, fish for corporate sponsorship)?
A tangentially related problem is once we do know how to override "sub" what is the syntax to use signatures and prototypes together? One answer is "don't", leave "sub" as is and use a new keyword. But as awful as prototypes are, they have their uses.
I like the
fun add($x, $y) { $x + $y }
or perhaps
$add = fun($x, $y) { $x + $y }
eh? nice and short. Though now that I look at it, 'func' might be slightly more readable for the uninitiated. But they might have other problems with this fun insanity!
now I have this song in my head...
"...conjunction junction, what's your function..."
I'd like to see "function" (or a variant) reserved for something carrying some promise of being side-effect free. That'd be useful for functional programming.
I'd suggest "procedure" or something like it for ordinary subs. I wouldn't even consider trying mixing prototypes and signatures, so I'd like to keep "sub" as is.
That way, you've covered three major programming styles.
Re:procedure ;-)
drhyde on 2008-10-01T11:07:37
The old BBC BASIC programmer in me thinks thatproc would work nicely.
I'd like to keep it short, i.e. "fun" or "def". "procedure" feels like lower-case COBOL.
(or, you could use the actual greek symbol)