Zum Inhalt springen

Functional Programming System

aus Wikipedia, der freien Enzyklopädie
QS-Informatik
Beteilige dich an der Diskussion!
Dieser Artikel wurde wegen inhaltlicher Mängel auf der Qualitätssicherungsseite der Redaktion Informatik eingetragen. Dies geschieht, um die Qualität der Artikel aus dem Themengebiet Informatik auf ein akzeptables Niveau zu bringen. Hilf mit, die inhaltlichen Mängel dieses Artikels zu beseitigen, und beteilige dich an der [[Wikipedia:Redaktion Informatik/Qualitätssicherung{{#if: {{#invoke:TemplUtl|faculty|ja}} | /Knacknüsse}}#Functional Programming System|Diskussion]]! ({{#ifeq:Wikipedia:Redaktion Informatik/Qualitätssicherung{{#ifeq: {{#invoke:TemplUtl|faculty|ja}} | /Knacknüsse}}|Functional Programming System|{{#switch:JA|JA=|NEIN=}}}}[[[:Vorlage:Neuer Abschnitt/URL]] +])

{{#if: Artikel besteht hauptsächlich aus nicht erklärten Beispielen und Weblinks. Die wenigen Textabsätze lassen kein Konzept erkennen. --Raphael Kirchner 15:31, 20. Nov. 2010 (CET)|
Begründung: Artikel besteht hauptsächlich aus nicht erklärten Beispielen und Weblinks. Die wenigen Textabsätze lassen kein Konzept erkennen. --Raphael Kirchner 15:31, 20. Nov. 2010 (CET)}}

Der Begriff {{#invoke:Vorlage:lang|flat}} (abgekürzt FP-System) bezeichnet ein von John W. Backus entwickeltes Konzept funktionaler Programmiersprachen.<ref>Lippe 2009, S. 73</ref> Backus ging dabei von der Beobachtung aus, dass gängige Programmiersprachen Computerprogramme als ein kleinteilige serialisierte Datenmanipulation darstellen, da sie gedanklich vom von-Neumann’schen Maschinenmodell ausgehen. Daraus resultieren laut Backus zwei Probleme. Zum einen, dass von-Neumann-Programme schwer parallelisierbar sind. Zum anderen, dass es schwer ist, über die Eigenschaften von Von-Neumann-Programmen formal zu argumentieren oder sie zu transformieren. Das Functional Programming System adressiert diese Probleme durch Konstruktion eines Programms <math>P</math> aus einer Komposition <math>P=F_n\circ F_{n-1} \circ F_{n-2} \circ ... \circ F_1</math>. Dabei werden größere Mengen strukturierter Daten von einer Funktion zur nächsten weiter gereicht, was technisch eine Parallelisierung der Verarbeitung ermöglicht. Backus zog auch in Betracht, diese Arbeitsweise zur Grundlage einer neuen Computerarchitektur zu machen, die diese Möglichkeit ausnutzt.

In einer Rede anlässlich der Verleihung des Turing Awards an Backus im Jahr 1977 stellte dieser die Idee von FP-Systemen vor. Der Vortragstitel lautete: {{#invoke:Vorlage:lang|flat}}.<ref>Can Programming Be Liberated from the von Neumann Style? A Functional Style and Its Algebra of Programs Stanford University, 1978 (PDF; 2,87 MB)</ref> In einem weiteren Aufsatz legte sich Backus auf den Begriff Function-Level Programming fest.<ref>Function Level Programs as Mathematical Objects (PDF)</ref>

Funktionales Programm zur Berechnung des Skalarprodukts

Backus gibt mit der Berechnung des Skalarprodukts ein instruktives Beispiel für die Anwendung des Functional Programming System.

Die Funktion <math>\mathrm{IP}</math>(„Inner Product“), die das Skalarprodukt zweier Vektoren bestimmt, ist zusammengesetzt aus der verketteten Berechnung der drei Funktionen <math>\mathrm{Trans}, (\alpha \times)</math> und <math>(/ +)</math> (in dieser Reihenfolge), was wie folgt als Funktionskomposition ausgedrückt wird:

<math> \begin{align} \mathrm{IP} &= (/ +) \circ (\alpha \times) \circ \mathrm{Trans} \end{align} </math>

Dabei ist <math>\mathrm{Trans}</math> eine Funktion, die eine Matrix transponiert. Dieser Zusammenhang wird in FP beispielsweise für eine Matrix <math>\Bigl(\begin{smallmatrix} 3 & 4 \\ 7 & 1 \\ -1 & 0 \end{smallmatrix}\Bigr) </math> so notiert:

<math> \begin{align} \mathrm{Trans}(\langle\langle3,4\rangle,\langle 7,1\rangle,\langle -1,0 \rangle\rangle ) &= \langle\langle 3,7,-1\rangle ,\langle 4,1,0\rangle\rangle \end{align} </math>

Die Symbole <math>\alpha</math> und <math>/</math> bezeichnen Funktionale. Diese übernehmen andere Funktionen um neue Funktionen zu bilden. In der Form <math>(\alpha \times)</math> übernimmt <math>\alpha</math> die zweistellige Multiplikationsfunktion <math>\times</math> und liefert eine Funktion, die <math>\times</math> auf alle Elemente einer übergebenen Liste von Paaren anwendet. Das Berechnungsergebnis ist dann die Liste der einzelnen Produkte. In modernen Programmiersprachen heißt das Funktional <math>\alpha</math> meistens map. Backus nennt sie auch ApplyToAll.

Die Funktion <math>/</math> schließlich entspricht grob der Funktion reduce oder fold in üblicher funktionaler Programmierung. Backus nennt sie Insert und meint damit, dass der Ausdruck <math>(/ +)</math> eine Funktion darstellt, die in einer übergebenen Liste die Operation <math>+</math> zwischen je zwei Elemente einfügt. Es gilt also <math>(/ +)(\langle2,3,4\rangle) = 2+3+4 = 9</math>.

Die Berechnung der Skalarprodukt-Funktion <math>\mathrm{IP}</math> angewendet auf die beiden Vektoren <math>\langle1,2,3\rangle</math> und <math>\langle6,5,4\rangle</math> kann dann so verstanden werden:

<math> \begin{align}

&\mathrm{IP}(\langle\langle1,2,3\rangle,\langle6,5,4\rangle\rangle) \\
&= ((/ +) \circ (\alpha \times) \circ \mathrm{Trans})(\langle\langle1,2,3\rangle,\langle6,5,4\rangle\rangle) \\
&= ((/ +) \circ (\alpha \times)) (\mathrm{Trans}(\langle\langle1,2,3\rangle,\langle6,5,4\rangle\rangle) \\
&= (/ +)((\alpha \times)(\langle\langle1,6\rangle,\langle2,5\rangle,\langle3,4\rangle\rangle) \\
&= (/ +)(\langle\times(\langle1,6\rangle),\times(\langle2,5\langle),\times(\langle3,4\rangle)\rangle \\
&= (/ +)(\langle6,10,12\rangle) \\
&= +(\langle6,+(\langle10,12\rangle)\rangle \\
&= 28

\end{align} </math>

Der Rechenprozess stellt also eine Verarbeitungspipeline ohne inneren Zustand dar, der die Eingabe in drei getrennten Arbeitsschritten in die Ausgabe überführt. Die Arbeitsschritte selbst können für sich in unterschiedlichem Grad parallelisiert werden. Auch die Erstellung einer Hardware-Pipeline für das Programm <math>IP</math> wäre möglich.

Notationen im FP-System

Backus verwendet eine lose an mathematische Konventionen angelehnte Notation und ergänzt diese um McCarthy’sche bedingte Ausdrücke sowie eine rekursive Darstellung für WHILE-Schleifen. Entscheidend ist, dass jede Entität eine Funktion darstellt und damit mit dem Kompositionsoperator <math>\circ</math> verträglich ist.

Zahlen als Selektoren

Die Vektorprogrammiersprache APL hatte einen entscheidenden Einfluss auf das Combinator based functional programming system von John Backus, das ohne Lambda-Variablenliste auskommt; stattdessen werden Selektoren (Zahlen) für das Herauspicken von Werten aus einer Sequenz verwendet.

1:<x1,…,xn> → x1
i:<x1,…,xi,…,xn> → xi
Feste Anzahl von Kombinatoren / Funktionalen Formen
Combining … … Form
Applikation f : x = f(x)
Komposition (f o g) : x = f(g(x))
Konstruktion [ f1 , f2 ,, fn ] : x = < f1:x , f2:x ,, fn:x >
Kondition (p f ; g) : x = wenn p:x = T dann f:x sonst wenn p:x = F dann g:x sonst
Konstante ~x : y = wenn y = dann sonst x
Insert (/ f) : <x1 , x2 , … , xn> = f:<x1 , f:<x2 , … f:<xn-1 , xn>>>
Apply to All (α f) : <x1 , x2 , … , xn> = < f:x1 , f:x2 , … , f:xn >
Binary to Unary bu f x
While-Schleife (while p f) : x = wenn p:x = T dann (while p f):(f:x) sonst wenn p:x = F dann x sonst

und die Definition von monadischen Funktionen:

Def Name  Term

Mit meinte Backus den Wert „Bottom“, ein Wert wie „undefiniert“ oder „Ausnahme“. T und F sind die Werte für „wahr“ und „falsch“.

Weiterentwicklung von FP-Systemen

Ein Team aus John Backus, John Williams und Edward Wimmers entwickelte 1989 am IBM Almaden Research Center den Nachfolger FL (Function-Level Programming). Mit diesem Konzept soll man Programme umstellen können so bequem wie man in der Mathematik Gleichungen umstellen kann, dazu musste referenzielle Transparenz gewährleistet sein. Das soll einer neuen Dimension von Programmoptimierung dienen (EFL). Backus wollte mit FL aus der „damaligen Informatik“ eine Ingenieurs-Disziplin machen. Wiederum einige Weiterentwicklungen von FL sind J (Einsatzgebiet wie APL) und PLaSM, eine Programmiersprache für Geometrie.

FP-Implementierungen

  • INTERACTIVE FP,<ref><templatestyles src="Webarchiv/styles.css" />{{#if:20190510141711
      | {{#ifeq: 20190510141711 | *
    | Vorlage:Webarchiv/Wartung/Stern{{#if: INTERACTIVE FP | {{#invoke:WLink|getEscapedTitle|INTERACTIVE FP}} | {{#invoke:Webarchiv|getdomain|http://www.cse.sc.edu/~bays/group9/index1.html}} }} (Archivversionen)
    | {{#iferror: {{#time: j. F Y|20190510141711}}
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/DatumDer Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
         | {{#if: INTERACTIVE FP | {{#invoke:WLink|getEscapedTitle|INTERACTIVE FP}} | {{#invoke:Webarchiv|getdomain|http://www.cse.sc.edu/~bays/group9/index1.html}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2023-05-07 05:56:04 InternetArchiveBot | 2023-05-07 05:56:04 InternetArchiveBot |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y|20190510141711}} im Internet Archive{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
      }}
  }}
      | {{#if:
          | {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
    | {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
       | 16= {{#if: INTERACTIVE FP | {{#invoke:WLink|getEscapedTitle|INTERACTIVE FP}} | {{#invoke:Webarchiv|getdomain|http://www.cse.sc.edu/~bays/group9/index1.html}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2023-05-07 05:56:04 InternetArchiveBot | 2023-05-07 05:56:04 InternetArchiveBot |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | 9 = {{#if: INTERACTIVE FP | {{#invoke:WLink|getEscapedTitle|INTERACTIVE FP}} | {{#invoke:Webarchiv|getdomain|http://www.cse.sc.edu/~bays/group9/index1.html}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2023-05-07 05:56:04 InternetArchiveBot | 2023-05-07 05:56:04 InternetArchiveBot |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!Vorlage:Webarchiv/Wartung/webcitation{{#if:  || }}
      }}
    | c|{{{webciteID}}}}} {{#if: INTERACTIVE FP | {{#invoke:WLink|getEscapedTitle|INTERACTIVE FP}} | {{#invoke:Webarchiv|getdomain|http://www.cse.sc.edu/~bays/group9/index1.html}} }} (Memento{{#if: {{#if: 2023-05-07 05:56:04 InternetArchiveBot | 2023-05-07 05:56:04 InternetArchiveBot |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
  }}
          | {{#if: 
              | Vorlage:Webarchiv/Today
              | {{#if:
                      | Vorlage:Webarchiv/Generisch
                      | {{#if: INTERACTIVE FP | {{#invoke:WLink|getEscapedTitle|INTERACTIVE FP}} | {{#invoke:Webarchiv|getdomain|http://www.cse.sc.edu/~bays/group9/index1.html}} }}  
                 }}}}}}}}{{#if:2023-05-07 05:56:04 InternetArchiveBot
    | Vorlage:Webarchiv/archiv-bot
  }}{{#invoke:TemplatePar|check
     |all      = url=
     |opt      = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
     |cat      = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
     |errNS    = 0
     |template = Vorlage:Webarchiv
     |format   = *
     |preview  = 1
  }}{{#ifexpr: {{#if:20190510141711|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
  }}{{#if: 
    | {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
        | web.archive.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}} 
        | webcitation.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}} 
        | archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
      }}{{#if: 
         | {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
             | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
          |  }} 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
      }}
    | {{#if: 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
      }}
  }}{{#if:{{#invoke:URLutil|isHostPathResource|http://www.cse.sc.edu/~bays/group9/index1.html}}
    || {{#if:  || }}
  }}{{#if: INTERACTIVE FP
    | {{#if: {{#invoke:WLink|isBracketedLink|INTERACTIVE FP}}
        | {{#if:  || }}
      }}
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Linktext_fehlt
  }}{{#switch: 
    |addlarchives|addlpages= {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/Parameter}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
  }}{{#ifeq: {{#invoke:Str|find|http://www.cse.sc.edu/~bays/group9/index1.html%7Carchiv}} |-1
    || {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://www.cse.sc.edu/~bays/group9/index1.html%7C4}}%7Chttp}} |-1
         || {{#switch: {{#invoke:Webarchiv|getdomain|http://www.cse.sc.edu/~bays/group9/index1.html }}
              | abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org = 
              | #default = {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/URL}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
            }} 
       }}
  }}</ref> Hilfeseite<ref><templatestyles src="Webarchiv/styles.css" />{{#if:20190510141731
      | {{#ifeq: 20190510141731 | *
    | Vorlage:Webarchiv/Wartung/Stern{{#if: INTERACTVE FP – Help | {{#invoke:WLink|getEscapedTitle|INTERACTVE FP – Help}} | {{#invoke:Webarchiv|getdomain|http://www.cse.sc.edu/~bays/group9/help.html}} }} (Archivversionen)
    | {{#iferror: {{#time: j. F Y|20190510141731}}
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/DatumDer Wert des Parameters {{#if: wayback | wayback | Datum }} muss ein gültiger Zeitstempel der Form YYYYMMDDHHMMSS sein!
         | {{#if: INTERACTVE FP – Help | {{#invoke:WLink|getEscapedTitle|INTERACTVE FP – Help}} | {{#invoke:Webarchiv|getdomain|http://www.cse.sc.edu/~bays/group9/help.html}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2023-05-07 05:56:04 InternetArchiveBot | 2023-05-07 05:56:04 InternetArchiveBot |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y|20190510141731}} im Internet Archive{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
      }}
  }}
      | {{#if:
          | {{#iferror: {{#time: j. F Y|{{{webciteID}}}}}
    | {{#switch: {{#invoke:Str|len|{{{webciteID}}}}}
       | 16= {{#if: INTERACTVE FP – Help | {{#invoke:WLink|getEscapedTitle|INTERACTVE FP – Help}} | {{#invoke:Webarchiv|getdomain|http://www.cse.sc.edu/~bays/group9/help.html}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2023-05-07 05:56:04 InternetArchiveBot | 2023-05-07 05:56:04 InternetArchiveBot |  }} |  des Vorlage:Referrer }} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{{webciteID}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | 9 = {{#if: INTERACTVE FP – Help | {{#invoke:WLink|getEscapedTitle|INTERACTVE FP – Help}} | {{#invoke:Webarchiv|getdomain|http://www.cse.sc.edu/~bays/group9/help.html}} }} {{#ifeq:  | [] | [ | ( }}Memento{{#if: {{#if: 2023-05-07 05:56:04 InternetArchiveBot | 2023-05-07 05:56:04 InternetArchiveBot |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y| 19700101000000 + {{#expr: floor {{#expr: {{#invoke:Str|sub|{{#invoke:Expr|base62|{{{webciteID}}}}}|1|10}}/86400}} }} days}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
       | #default= Der Wert des Parameters {{#if: webciteID | webciteID | ID }} muss entweder ein Zeitstempel der Form YYYYMMDDHHMMSS oder ein Schüsselwert mit 9 Zeichen oder eine 16-stellige Zahl sein!Vorlage:Webarchiv/Wartung/webcitation{{#if:  || }}
      }}
    | c|{{{webciteID}}}}} {{#if: INTERACTVE FP – Help | {{#invoke:WLink|getEscapedTitle|INTERACTVE FP – Help}} | {{#invoke:Webarchiv|getdomain|http://www.cse.sc.edu/~bays/group9/help.html}} }} (Memento{{#if: {{#if: 2023-05-07 05:56:04 InternetArchiveBot | 2023-05-07 05:56:04 InternetArchiveBot |  }} |  des Vorlage:Referrer}} vom {{#time: j. F Y|{{{webciteID}}}}} auf WebCite{{#if:  | ;  }}{{#ifeq:  | [] | ] | ) }}
  }}
          | {{#if: 
              | Vorlage:Webarchiv/Today
              | {{#if:
                      | Vorlage:Webarchiv/Generisch
                      | {{#if: INTERACTVE FP – Help | {{#invoke:WLink|getEscapedTitle|INTERACTVE FP – Help}} | {{#invoke:Webarchiv|getdomain|http://www.cse.sc.edu/~bays/group9/help.html}} }}  
                 }}}}}}}}{{#if:2023-05-07 05:56:04 InternetArchiveBot
    | Vorlage:Webarchiv/archiv-bot
  }}{{#invoke:TemplatePar|check
     |all      = url=
     |opt      = text= wayback= webciteID= archive-is= archive-today= archiv-url= archiv-datum= ()= archiv-bot= format= original=
     |cat      = Wikipedia:Vorlagenfehler/Vorlage:Webarchiv
     |errNS    = 0
     |template = Vorlage:Webarchiv
     |format   = *
     |preview  = 1
  }}{{#ifexpr: {{#if:20190510141731|1|0}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}}{{#if:|+1}} <> 1
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Genau einer der Parameter 'wayback', 'webciteID', 'archive-today', 'archive-is' oder 'archiv-url' muss angegeben werden.|1}}
  }}{{#if: 
    | {{#switch: {{#invoke:Webarchiv|getdomain|{{{archiv-url}}}}}
        | web.archive.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von Internet Archive erkannt, bitte Parameter 'wayback' benutzen.|1}} 
        | webcitation.org = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von WebCite erkannt, bitte Parameter 'webciteID' benutzen.|1}} 
        | archive.today |archive.is |archive.ph |archive.fo |archive.li |archive.md |archive.vn = 
          {{#if:  || }}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Im Parameter 'archiv-url' wurde URL von archive.today erkannt, bitte Parameter 'archive-today' benutzen.|1}}
      }}{{#if: 
         | {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}
             | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Wert des Parameter 'archiv-datum' ist ungültig oder hat ein ungültiges Format.|1}}
          |  }} 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Pflichtparameter 'archiv-datum' wurde nicht angegeben.|1}}
      }}
    | {{#if: 
         | {{#if:  || }}Vorlage:Webarchiv/Wartung/Parameter{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Der Parameter 'archiv-datum' ist nur in Verbindung mit 'archiv-url' angebbar.|1}}
      }}
  }}{{#if:{{#invoke:URLutil|isHostPathResource|http://www.cse.sc.edu/~bays/group9/help.html}}
    || {{#if:  || }}
  }}{{#if: INTERACTVE FP – Help
    | {{#if: {{#invoke:WLink|isBracketedLink|INTERACTVE FP – Help}}
        | {{#if:  || }}
      }}
    | {{#if:  || }}Vorlage:Webarchiv/Wartung/Linktext_fehlt
  }}{{#switch: 
    |addlarchives|addlpages= {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/Parameter}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: enWP-Wert im Parameter 'format'.|1}}
  }}{{#ifeq: {{#invoke:Str|find|http://www.cse.sc.edu/~bays/group9/help.html%7Carchiv}} |-1
    || {{#ifeq: {{#invoke:Str|find|{{#invoke:Str|cropleft|http://www.cse.sc.edu/~bays/group9/help.html%7C4}}%7Chttp}} |-1
         || {{#switch: {{#invoke:Webarchiv|getdomain|http://www.cse.sc.edu/~bays/group9/help.html }}
              | abendblatt.de | daserste.ndr.de | inarchive.com | webcitation.org = 
              | #default = {{#if:  || }}{{#if: 1 |Vorlage:Webarchiv/Wartung/URL}}{{#invoke:TemplUtl|failure| Fehler bei Vorlage:Webarchiv: Archiv-URL im Parameter 'url' anstatt URL der Originalquelle. Entferne den vor der Original-URL stehenden Mementobestandteil und setze den Archivierungszeitstempel in den Parameter 'wayback', 'webciteID', 'archive.today' oder 'archive-is' ein, sofern nicht bereits befüllt.|1}}
            }} 
       }}
  }}</ref> dazu
          | )
          | {{#if:{{#ifeq:en|de||{{#if:en|1}}}}| ; 
              | )}}}}}}{{#if:| {{{titelerg}}}{{#invoke:Vorlage:Internetquelle|Endpunkt|titel={{{titelerg}}}}}}}}}}}{{#if:http://www.dia.uniroma3.it/~paoluzzi/plasm/docs/%7C{{#if:{{#invoke:URLutil%7CisResourceURL%7C1=http://www.dia.uniroma3.it/~paoluzzi/plasm/docs/}}%7C%7C}}}}{{#if:PLaSM functional language for computing with geometry|{{#if:{{#invoke:WLink|isValidLinktext|1=PLaSM functional language for computing with geometry|lines=0}}||}}}}{{#if: | In: {{#invoke:Vorlage:Internetquelle|TitelFormat|titel={{{werk}}}}}}}{{#if: Alberto Paoluzzi (Universität Rom III)| Alberto Paoluzzi (Universität Rom III){{#if: |,|{{#if: 2010-11-27 | {{#if:{{#invoke:TemplUtl|faculty|}}|;|,}}}}}}}}{{#if: | {{#if:{{#invoke:DateTime|format|{{{datum}}}|noerror=1}}
            |{{#invoke:DateTime|format|{{{datum}}}|T._Monat JJJJ}}
            |{{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, datum={{{datum}}}|class=Zitationswartung}} }}{{#if: |,|{{#if: 2010-11-27 | {{#if:{{#invoke:TemplUtl|faculty|}}|;|,}}}}}}}}{{#if: | S. {{{seiten}}}{{#if: |,|{{#if: 2010-11-27 | {{#if:{{#invoke:TemplUtl|faculty|}}|;|,}}}}}}}}{{#if: {{#invoke:TemplUtl|faculty|}}| {{#if:Alberto Paoluzzi (Universität Rom III)|{{#if:|archiviert|ehemals}}|{{#if:|Archiviert|Ehemals}}}} {{#if:|vom|im}} Vorlage:Referrer{{#if:{{#invoke:TemplUtl|faculty|}}| (nicht mehr online verfügbar)}}{{#if: | am {{#iferror: {{#iferror:{{#invoke:Vorlage:FormatDate|Execute}}|}}|{{{archiv-datum}}}{{#if:953754||(?)}}}}}}{{#if: 2010-11-27|;}}}}{{#if: 2010-11-27| {{#if:Alberto Paoluzzi (Universität Rom III){{#invoke:TemplUtl|faculty|}}|abgerufen|Abgerufen}} {{#switch: {{#invoke:Str|len| {{#invoke:DateTime|format| 2010-11-27 |ISO|noerror=1}} }}
       |4=im Jahr
       |7=im
       |10=am
       |#default={{#invoke:TemplUtl|failure|1=Fehler bei Vorlage:Internetquelle, abruf=2010-11-27|class=Zitationswartung}} }} {{#invoke:DateTime|format|2010-11-27|T._Monat JJJJ}}
    | {{#invoke:TemplUtl|failure|1=Vorlage:Internetquelle | abruf=2026-MM-TT ist Pflichtparameter}} }}{{#if:{{#ifeq:en|de||{{#if:en|1}}}}|{{#if:Alberto Paoluzzi (Universität Rom III){{#if: 2010-11-27 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}}}}
       |  (
       | {{#if: | |  (}}
       }}{{#ifeq:{{#if:en|en|de}}|de||
          {{#invoke:Multilingual|format|en|slang=!|split=[%s,]+|shift=m|separator=, }}}}{{#if: |{{#ifeq:{{#if:en|en|de}}|de||, }}{{{kommentar}}}}})}}{{#if: {{#if: 2010-11-27 | {{#if:{{#invoke:TemplUtl|faculty|}}||1}} }}en|{{#if: |: {{
 #if: 
 | {{
     #ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
     | Vorlage:Str trim
     | {{#invoke:Vorlage:lang|flat}}
     }}
 | {{#ifeq: {{#if:{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|{{#if: {{#invoke:templutl|faculty|}}|de-ch|de}}|de}} | de
     | „Vorlage:Str trim“
     | {{#invoke:Text|quote
         |1={{#if: 
              | {{#invoke:Vorlage:lang|flat}}
              | {{#invoke:Vorlage:lang|flat}} }}
         |2={{#if: {{#invoke:TemplUtl|faculty|}}|de-CH|de}}
         |3=1}} }}

}}{{#if:

   |  (<templatestyles src="Person/styles.css" />{{#if:  | :  }}{{#if:  | , deutsch: „“ }})
   | {{#if: 
       |  ({{#if:  | , deutsch: „“ }})
       | {{#if:  |  (deutsch: „“) }}
 }}

}}{{#if: {{{zitat}}}

   | {{#if: 
       | {{#if: {{{zitat}}}
           | Vorlage:": Text= und 1= gleichzeitig, bzw. Pipe zu viel }} }}
   | Vorlage:": Text= fehlt }}{{#if:  | {{#if: {{#invoke:Text|unstrip|{{{ref}}}}}
             | Vorlage:": Ungültiger Wert: ref=
             | {{{ref}}} }}

}}|.{{#if:{{#invoke:TemplUtl|faculty|}}|{{#if:||{{#ifeq: | JaKeinHinweis |{{#switch:

   |0|=Vorlage:Toter Link/Core{{#if: http://www.dia.uniroma3.it/~paoluzzi/plasm/docs/
       | {{#if:  | [1] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: 
           | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }}
         }}
       |   (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.)
     }}{{#switch: 
         |no|0|=
         |#default={{#if:  ||  }}
    }}{{#invoke:TemplatePar|check
         |opt      = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked=
         |cat      = Wikipedia:Vorlagenfehler/Vorlage:Toter Link
         |errNS    = 0
         |template = Vorlage:Toter Link
         |format   = 
         |preview  = 1
    }}{{#if: http://www.dia.uniroma3.it/~paoluzzi/plasm/docs/
      | {{#if:{{#invoke:URLutil|isWebURL|http://www.dia.uniroma3.it/~paoluzzi/plasm/docs/}}
          || {{#if:  ||  }} 
        }}
      | {{#if: 
           | {{#if:  ||  }}
           | {{#if:  ||  }}
        }}
    }}{{#if: 
       | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}}
             || {{#if:  ||  }} 
         }}
    }}{{#switch: deadurl
         |checked|deadurl|= 
         |#default=  {{#if:  ||  }}
    }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=http://www.dia.uniroma3.it/~paoluzzi/plasm/docs/ Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. )  {{#if: 
            | {{#if: deadurlausgeblendet | | Vorlage:Toter Link/archivebot }}
         }}Vorlage:Toter Link/Core{{#switch: 
          |no|0|=
          |#default= {{#if:  ||  }}
        }}{{#invoke:TemplatePar|check
         |all      = inline= url=
         |opt      = datum= date= archivebot= bot= botlauf= fix-attempted= checked=
         |cat      = Wikipedia:Vorlagenfehler/Vorlage:Toter Link
         |errNS    = 0
         |template = Vorlage:Toter Link
         |format   = 
         |preview  = 1
       }}{{#if: http://www.dia.uniroma3.it/~paoluzzi/plasm/docs/
       | {{#if:{{#invoke:URLutil|isWebURL|http://www.dia.uniroma3.it/~paoluzzi/plasm/docs/}}
          || {{#if:  ||  }} 
        }}
    }}{{#if: 
         | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}}
             || {{#if:  ||  }} 
           }}
    }}{{#switch: deadurl
         |checked|deadurl|= 
         |#default=  {{#if:  ||  }}
    }}[http://www.dia.uniroma3.it/~paoluzzi/plasm/docs/ }}|{{#switch: 
   |0|=Vorlage:Toter Link/Core{{#if: http://www.dia.uniroma3.it/~paoluzzi/plasm/docs/
       | {{#if:  | [2] }} (Seite {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. Suche im Internet Archive ){{#if: 
           | {{#if:  | | Vorlage:Toter Link/archivebot }}
         }}
       |   (Seite {{#switch:|no|0|=|#default=dauerhaft }}nicht mehr abrufbar{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}.)
     }}{{#switch: 
         |no|0|=
         |#default={{#if:  ||  }}
    }}{{#invoke:TemplatePar|check
         |opt      = inline= url= text= datum= date= archivebot= bot= botlauf= fix-attempted= checked=
         |cat      = Wikipedia:Vorlagenfehler/Vorlage:Toter Link
         |errNS    = 0
         |template = Vorlage:Toter Link
         |format   = 
         |preview  = 1
    }}{{#if: http://www.dia.uniroma3.it/~paoluzzi/plasm/docs/
      | {{#if:{{#invoke:URLutil|isWebURL|http://www.dia.uniroma3.it/~paoluzzi/plasm/docs/}}
          || {{#if:  ||  }} 
        }}
      | {{#if: 
           | {{#if:  ||  }}
           | {{#if:  ||  }}
        }}
    }}{{#if: 
       | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}}
             || {{#if:  ||  }} 
         }}
    }}{{#switch: 
         |checked|deadurl|= 
         |#default=  {{#if:  ||  }}
    }}|#default= https://wiki-de.moshellshocker.dns64.de/index.php?title=Wikipedia:Defekte_Weblinks&dwl=http://www.dia.uniroma3.it/~paoluzzi/plasm/docs/ Die nachstehende Seite ist {{#switch:|no|0|=|dauerhaft }}nicht mehr abrufbar]{{#if:  | , festgestellt im {{#invoke:DateTime|format||F Y}} }}. (Suche im Internet Archive. )  {{#if: 
            | {{#if:  | | Vorlage:Toter Link/archivebot }}
         }}Vorlage:Toter Link/Core{{#switch: 
          |no|0|=
          |#default= {{#if:  ||  }}
        }}{{#invoke:TemplatePar|check
         |all      = inline= url=
         |opt      = datum= date= archivebot= bot= botlauf= fix-attempted= checked=
         |cat      = Wikipedia:Vorlagenfehler/Vorlage:Toter Link
         |errNS    = 0
         |template = Vorlage:Toter Link
         |format   = 
         |preview  = 1
       }}{{#if: http://www.dia.uniroma3.it/~paoluzzi/plasm/docs/
       | {{#if:{{#invoke:URLutil|isWebURL|http://www.dia.uniroma3.it/~paoluzzi/plasm/docs/}}
          || {{#if:  ||  }} 
        }}
    }}{{#if: 
         | {{#if:{{#invoke:DateTime|format||F Y|noerror=1}}
             || {{#if:  ||  }} 
           }}
    }}{{#switch: 
         |checked|deadurl|= 
         |#default=  {{#if:  ||  }}
    }}[http://www.dia.uniroma3.it/~paoluzzi/plasm/docs/ }} }}}}}}}}}}{{#if:|
        {{#invoke:Vorlage:Internetquelle|archivBot|stamp={{{archiv-bot}}}|text={{#if:|Vorlage:Webarchiv/archiv-bot}}

}}}}{{#invoke:TemplatePar|check |all= url= titel= |opt= autor= hrsg= format= sprache= titelerg= werk= seiten= datum= abruf= zugriff= abruf-verborgen= archiv-url= archiv-datum= archiv-bot= kommentar= zitat= AT= CH= offline= |cat= {{#ifeq: 0 | 0 | Wikipedia:Vorlagenfehler/Vorlage:Internetquelle}} |template= Vorlage:Internetquelle |format=0 |preview=1 }}</ref>

Siehe auch

Literatur

  • {{#invoke:Vorlage:Literatur|f}}
  • {{#invoke:Vorlage:Literatur|f}}

Einzelnachweise

<references />

Weblinks