www.wikidata.de-de.nina.az
Curry 2 ist eine experimentelle funktionallogische Programmiersprache 3 die auf Haskell basiert Sie vereint Elemente der funktionalen und logischen Programmierung insbesondere Constraintprogrammierung CurryParadigmen funktional logisch nicht strikt modularDesigner Michael Hanus Sergio Antoy et al Aktuelle Version 3 6 0 1 10 November 2023 Typisierung statisch stark inferriertWichtige Implementierungen PAKCS mit Prolog Code als Ergebnis KiCS2 mit Haskell Code als Ergebnis Beeinflusst von HaskellBetriebssystem portabelcurry lang orgSie erweitert Haskell mit Ausnahme des Uberladens mittels Typklassen sie sind lediglich von einigen Implementierungen als Spracherweiterung enthalten beispielsweise vom Munster Curry Compiler 4 Inhaltsverzeichnis 1 Grundlagen 2 Strategien 3 Weblinks 4 BelegeGrundlagen BearbeitenEs gibt keine Seiteneffekte im Gegensatz zu prozeduralen objektorientierten oder den meisten anderen imperativen Sprachen Daher spielt die Reihenfolge in der Teilausdrucke ausgewertet werden keine Rolle fur den Wert des Ergebnisses Ferner gibt es konzeptionell keine Funktionen mehr an ihre Stelle treten Relationen mit Funktionscharakter sog Korrespondenzen Im Gegensatz zu Funktionen sind diese nicht notwendig rechtseindeutig das heisst fur eine bestimmte Eingabe mussen sie nicht genau ein Ergebnis haben insbesondere sind sie von vornherein partiell Dadurch ist es moglich nicht nur Konstruktoren sondern auch Funktionsaufrufe beim Pattern Matching einzusetzen die die darin vorkommenden Variablen nicht notwendigerweise eindeutig belegen Das wird durch nicht deterministische Bedarfsauswertung sinnvoll erganzt Siehe auch Funktionallogische ProgrammierungStrategien BearbeitenDa es keine Seiteneffekte gibt kann in einem funktionallogischen Programm mit beliebigen Strategien ausgewertet werden Um Ausdrucke auszuwerten verwenden die meisten Curry Compiler eine Variante des needed narrowing das Bedarfsauswertung mit nicht deterministischen Suchtechniken verbindet Im Gegensatz zu Prolog das Rucksetzverfahren auf der Suche nach Losungen verwendet beschrankt sich Curry nicht auf eine bestimmte Strategie Vielmehr gibt es Implementierungen von Curry wie KiCS2 bei denen der Benutzer auf einfache Weise eine Strategie auswahlen kann unter anderem Tiefensuche Breitensuche iteratives Vertiefen oder paralleles Suchen Weblinks BearbeitenCurry Die Homepage von Curry englisch Smap Eine webbasierte Ausfuhrungsumgebung fur Curry und Haskell mit vielen Beispielprogrammen englisch MCC Memento vom 16 Januar 2007 im Internet Archive Der Munster Curry Compiler der C Code generiert PAKCS Eine grossere Curry Implementierung mit WWW Interface das Prolog Code generiert englisch KiCS KiCS2 Eine Curry Implementierung die Haskell Code generiert englisch Curry Mailing List englisch Homepage von Michael Hanus englisch Purely Functional Lazy Non deterministic Programming Fischer Shan Transforming Functional Logic Programs into Monadic Functional Programs Brassel Fischer Hanus Reck 2010 on modeling lazy non deterministic logic programming like in Curry in a purely functional language Haskell such approach might give the programmer more flexibility in the control over the strategies that in the case of Curry are built in Belege Bearbeiten Current release PAKCS Version 3 6 0 10 11 23 10 November 2023 abgerufen am 14 November 2023 Michael Hanus ed Curry A Truly Integrated Functional Logic Language Abgerufen im 1 Januar 1 Sergio Antoy and Michael Hanus Functional Logic Programming In Communications of the ACM 53 Jahrgang Nr 4 ACM 2010 S 74 85 doi 10 1145 1721654 1721675 acm org The Munster Curry Compiler Source CodeA mirror of an experimental branch adding type classes to the Munster Curry compiler is available at 1 There is also a status page summarizing implemented changes and open issues Normdaten Sachbegriff GND 1122372914 lobid OGND AKS Abgerufen von https de wikipedia org w index php title Curry Programmiersprache amp oldid 231282106