Extending Perl with functional macros
You can find more information on the speaker's site:
A multitude of extension were invented for Perl5, using "source
filters" and various "XS" add-ons or even darker magic.
Unfortunately mostly without wide acceptance within the community!
The complexity of Perl's syntax limits most approaches severely, they
- not reliable enough,
- too complex to install, use, maintain ...
- incompatible with established development tools
- too delicate in edge cases, hence limited to narrow use cases
We are trying to analyze the nature of these problems and and will discuss
design principles to avoid them systematically.
In consequence we will show a functional approach to elegantly
provide a wide variety of new idioms, including operators and
control structures, just by using
a) The syntactic sugar of chaining functions with special prototypes
b) A LISP like macro system which expands functions to inlined code.
A working proof of concept is presented, realized in pure Perl, only
by using (and patching) CORE modules like B::Deparse.
The prototype is simple to install, backward compatible to previous
Perl versions and easy to adapt w/o knowledge of any perlguts.
We will demonstrate how to extend Perl5 like this with idioms like
- List Comprehensions,
- Co-Routines and Gather-Take,
Aim of this presentation is to discuss pro and cons of this strategy
within a proficient audience. No C or XS knowledge will be needed to
follow, we'll develop step by step on the basis of core perldocs.
Discussion board: The "Abstract-URL" leads to nabbles.
Talksheets: To be published soon.
Articles covering and extending the subject with full code:
1. $foo-Magazine IV/2010 (German)
2. $foo-Magazine II/2011 (German)
- Léon Brocard (acme)
- H.Merijn Brand (Tux)
- Dagfinn Ilmari Mannsåker (ilmari)
- Brian McCauley (Nobull)
- Jesse Vincent
- Trond Michelsen (trondmm)
- Roman Baumer (rba)
- Sue Spence (virtualsue)
- Florian Ragwitz (rafl)
- Damian Conway (damian)
- Martin Kjeldsen (baest)
- Lars Holgaard
- Michael Lang (langmic)
- Steffen Schwigon (renormalist)
- David Faux
- Dietrich Raisin
- Lars Dɪᴇᴄᴋᴏᴡ 迪拉斯 (daxim)
- Maciej Czekay (Bruno)
- Dave Sherohman (dsheroh)
- Alexey Surikov (ksurent)
- Mårten Svantesson
- Reini Urban (rurban)
- Aliaksandr Zahatski (zag)
- marc chantreux (eiro)
- Leon Timmermans (leont)
- Rolf Langsdorf (LanX)
- Daniel Blom
- roger blom
- Matthias Zeichmann
- Magnus Zeisig (magnuz)
- Gabi Hack (gabimuc)
- Marko Kind
- Heinz Knutzen
- Alexander Orlovsky (nordicdyno)
- Moritz Onken (mo)
- Grzegorz Dzięgielewski (Jabbas)
- Iulia Bublea
- Emil Dragu
- Sorin Pop
- Sergei Kirjanov
- Karsten Silkenbaeumer (ksi)
- Nikolay Morev
- Olle Johansson (ollej)
- Tudor Constantin
- Gligan Calin Horea