Diskussion:Church-Kodierung

Letzter Kommentar: vor 13 Jahren von Daniel5Ko in Abschnitt Beispiele für Funktionale Programming

Beispiele für Funktionale Programming

Bearbeiten

Hallo!
Würde es Sinn machen hier verschiedene Beispiele für die Chruch Kodierung anzugeben? In Programmiersprachen wie z.B.: Haskell oder Scala kann man dies ja über das Typsystem realisieren.
http://en.wikipedia.org/wiki/Church_encoding#Translation_with_other_representations
http://jim-mcbeath.blogspot.com/2008/11/practical-church-numerals-in-scala.html
19:05, 07. Mrz. 2011 (CEST) wikitester2501

Hmm, keine Ahnung. Aber hier mal ein paar Gedanken:
  • Die beiden Links beschreiben verschiedene Dinge. In dem Scala-Artikel geht's darum, Church-Numerale im Typsystem zu definieren und zur Compile-Zeit zu benutzen; das Haskell-Beispiel gibt Church-Numeralen lediglich einen statischen Typ.
  • Ich fänd's viel besser, wenn der vorliegende Artikel irgendwie sinnvoll erwähnen würde, dass Church-Kodierungen eine Möglichkeit sind, algebraische Datentypen darzustellen: nämlich als deren jeweilige Katamorphismen! (Stichwörter: Bananen, Umschläge, Linsen und Stacheldraht :) )
--Daniel5Ko 22:30, 8. Mär. 2011 (CET)Beantworten
Hallo Daniel!
Ja du hast recht das sind verschiedene Dinge. Grundsätzlich geht es mir darum zu zeigen das Typ-Level Programmierung eine sinnvolle Sache ist und Church Numerale können hierbei eine praktische Rolle spielen. Wie das Builder Beispiel hier zeigt:
http://jim-mcbeath.blogspot.com/2009/09/type-safe-builder-in-scala-using-church.html
Somit kann niemals eine falsche oder ungültige Instanz erzeugt werden, da der Compiler dies bereits verhindert. Einige Blogs kommen und gehen im Netz, ich denke dieser wird jedoch nicht so schnell "verschwinden". Also Verlinken, Beispiel übernehmen (Lizenz kompatibel?!) oder eigenes Beispiel einbringen?
Ach ja und die "Linsen" sind ja wirklich ein aktuelles bzw. gerade intensiv erforschtes Thema.
http://patternsinfp.wordpress.com/2011/01/31/lenses-are-the-coalgebras-for-the-costate-comonad/
scalaz besitzt tatsächlich eine Implementierung. Praktische Anwendungsbeispiele habe ich allerdings noch keine gesehen.

18:49, 09. Mrz. 2011 (CEST) wikitester2501

Hi. Naja, Linsen an sich sind ja ein alter Hut. Mit den vier Worten wollte ich dich eigentlich auf dieses Paper [1] von 1991 aufmerksam machen, wo z.B. u.a. mal kurz erzählt wird, was ein Katamorphismus ist. :)
Zurück zum Typlevel-Programmieren: Ja, unter der Maßgabe, dass Church-Kodierungen (nicht nur von Zahlen, sondern allem möglichen!) dort Verwendung finden können, (und müssen, weil nichts besseres existiert) könnte das sinnvoll sein. Das wäre so etwas wie eine "praktische Anwendung"... In Sprachen mit vollausgeprägten dependent types fällt dieser Nutzen allerdings wieder weg, und wird teilweise sogar illegal, weil es da ausdrucksstärkere und sicherere Methoden gibt.
Gruß --Daniel5Ko 20:43, 9. Mär. 2011 (CET)Beantworten