Thread Programmierparadigmen in Perl (6 answers)
Opened by akuji at 2013-10-28 13:48

murphy
 2013-10-28 16:40
#171610 #171610
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Zum Thema funktionale Programmierung in Perl könnte man anführen, dass die Sprache wichtige Basiselemente bietet um diesen Stil zu unterstützen: Es gibt Subroutinenreferenzen, also Funktionen als Werte wie jedes andere Datenobjekt, es gibt anonyme Subroutinen, die lexikalische Closures bilden, und es gibt grundlegende Funktionen höherer Ordnung wie map, grep in der Standardbibliothek, reduce in CPAN:List::Util und einiges mehr in CPAN:List::MoreUtils.

Andererseits ist Perl natürlich nicht seiteneffektfrei, also keinesfalls pur funktional, aber das sind andere Sprachen, die klassisch als funktional angesehen werden, auch nicht (z.B. OCaml, SML, Scheme).

Was Logikprogrammierung betrifft, so hindert einen natürlich niemand daran, in Perl einen SAT-Solver oder einen generelleren Constraintsolver zu programmieren. Da Perl Tailcalls unterstützt, lässt sich Backtracking leicht, wenn auch nicht sehr praktisch, mit Hilfe von CPS-Transformationen implementieren. Abgesehen davon gibt es zum Beispiel das Modul CPAN:Quantum::Superpositions, welches zwar einen gänzlich anderen Ansatz als eine Sprache wie Prolog verfolgt, sich aber besser in den Kontext einer prozeduralen Sprache einfügt und einige Probleme, für die Logikprogrammierung gut geeignet wäre, ähnlich elegant lösen kann.

Abschließend sollte man vielleicht noch anmerken, dass Perls Engine für reguläre Ausdrücke natürlich auch einen Constraintsolver darstellt.
When C++ is your hammer, every problem looks like your thumb.

View full thread Programmierparadigmen in Perl