A Haskell Lover's Plea

Why should I renounce for you, dear Haskell my sweet,
My much yearned for side-effects?
Why should I face the software dragons
Without my weapon, my manly spear of destruction?
They call you non-strict, oh so elegant and pure Ariel,
Yet such celibacy is surely severe.

Your flesh is too weak, you brutish beast.
The tarpit demons of software hell await you!
This sinful habit in which you indulge
Does more harm than good.
Restrain yourself! And you too will see
The wondrous and refined joys of referential transparency!

Alas, I can do without goto, without call/cc.
But without side-effects, I am lost and forlorn, can't you see?
Oh, lady, fairer yet than admirable Miranda (tm),
Scheme's prolix, parenthetical tedium
Is no match for your elegant syntax. The alure
Of list comprehensions outshines even Prolog for sure...

Ah, flatter me not, you low-spirited Caliban!
Do you not know what advantages await
Those who renounce destructive update?
Start with an immaculate specification,
Throw in some algebraic code transformation.
And produce an elegantly maintainable implementation.

Show mercy on mere mortals like me!
How I dream still of the efficient pleasures of pointer manipulation!
How I too wish to mutate memory with thoughts born of von Neumann earthiness!
Relent! Relent! Let me have my assignment, my printf, my gensym.
Let me fulfill my destructive impulses.
Let me set-bang. Let me assign. Let me update.

Fear not, lowly beast, I have heard your pleas.
My heart is not imune to such rending.
To satisfy you in your low-seated desire
I'll give you monads galore,
My beauty may suffer, yet will I aspire
To let you do (within typeful limits) what you please.

Rejoice! Rejoice! I'm free! I'm free!
The best of both worlds is mine at last.
Oh, infinite progeny of Church, Hope, and ML,
I curry favor not when I say:
Scan me right, fold me left,
Lazy lady of many shapes, you've got class.


(Adapted from an a poem original written by Don Smith, I believe)