functional-programming

___ qstnhdr ___ Wie bekomme ich Paare von Elementen aus unendlichen Listen in Haskell? ___ answer21568207 ___
%Vor%

Das wäre aber viel schneller.

%Vor%     
___ answer21601174 ___

Es ist schade, dass Sie @ leftaroundabouts Lösung nicht akzeptiert haben. Es hat viel mehr zu bieten. Zum Beispiel hat die andere Lösung eine Heuristik "alle Zahlen müssen kleiner als n sein" (was tun Sie für Probleme, bei denen Sie diese Heuristik nicht haben?), Und ein paar andere Schritte, die es schwerer machen, das tatsächlich zu beweisen ist eine Lösung für Goldbachs Problem - z Können Sie demonstrieren, dass die Aufzählung der Primzahlen alle nützlichen Primzahlpaare zusammenfasst? (Es tut, aber können Sie es demonstrieren? Dies ist die Schwäche dieser Lösung)

Hier werde ich zeigen, wie Sie die Lösung @leftaroundabout präsentieren können, ohne das Wort "monad" zu sagen.

Das Problem mit dem Listenverständnis, das Sie zuerst erstellt haben, ist, dass es die Lösung "Tiefe zuerst" durchsucht - nehmen Sie ein Element aus der ersten Liste und versuchen Sie dann alle Kombinationen mit diesem Element. Wenn es jedoch eine unendliche Anzahl von Kombinationen gibt, werden Sie niemals Paare mit dem zweiten Element aus der ersten Liste aufzählen. Hier müssen wir über "Breite zuerst" nach Lösungen suchen.

Nehmen wir an, %code% ist ein Generator von Lösungen:

%Vor%

Nehmen wir an, %code% ist ein Generator von Generatoren von Lösungen:

%Vor%

Alles, was wir jetzt tun müssen, ist Lösungen aufzuzählen, indem wir jeweils eine Lösung von jedem Generator nehmen. Wohlgemerkt, wenn die Anzahl der Generatoren unendlich ist, können wir sie nicht einfach einzeln nehmen - so werden wir niemals die zweite Lösung vom ersten Generator bekommen, also müssen wir sie irgendwie "schreiten":

%Vor%

Das ist es.

%Vor%

Jetzt zur Effizienz. Es ist alles in %code% und %code% . Fügen Sie eine Bedingung zu %code% zu %code% hinzu, und es funktioniert auch dann, wenn Goldbachs Vermutung falsch ist (Sie müssen sie jedoch nicht hinzufügen). Fügen Sie eine Bedingung zu %code% zu %code% hinzu, und Sie werden nur die Paare aufzählen, in denen die erste Primzahl größer als die andere ist.

    
___ answer21566020 ___

Der schönste Weg ist die Breite . erste Liste Monade . Da List Comprehensions nur als syntaktischer Zucker der Monade betrachtet werden kann (ähnlich wie %code% ), ermöglicht es Ihnen, es genau so aussehen zu lassen, wie Sie es jetzt haben:

%Vor%     
___ tag123haskell ___ Haskell ist eine funktionale Programmiersprache mit starker statischer Typisierung, verzögerungsfreier Auswertung, umfangreicher Parallelitäts- und Parallelitätsunterstützung und einzigartigen Abstraktionsfunktionen. ___ tag123funktionale Programmierung ___ Funktionale Programmierung ist ein Programmierparadigma, das auf der Erzeugung von Abstraktionen unter Verwendung von Funktionen basiert, die Nebeneffekte und Zustandsänderungen vermeidet. Reine funktionale Programmierung ist threadsicher. ___ tag123lazyevaluation ___ Lazy Evaluation bezieht sich auf eine Vielzahl von Konzepten, die eine Evaluierung vermeiden wollen eines Ausdrucks, außer wenn sein Wert benötigt wird, und um die Ergebnisse der Auswertung eines Ausdrucks unter allen Verwendungen seines Ausdrucks zu teilen, so dass kein Ausdruck benötigt wird mehr als einmal bewertet werden. ___ answer45250130 ___

oder ein Lambda, die unendliche Liste von Paaren aus einer unendlichen Liste von was auch immer gibt

%code%

auf ghci %code%

    
___ qstntxt ___

Allgemeines Problem

Ich habe eine unendliche Liste und möchte ein Paar %code% auswählen, wobei %code% und %code% beide aus der Liste kommen und das Paar eine Eigenschaft erfüllt. Die Verwendung von List Comprehensions scheint nicht zu funktionieren, da die Liste unendlich ist.

Spezifische Instanz

Ich versuche ein Paar Primzahlen zu finden, die sich zu einer bestimmten Zahl addieren (siehe dieses Codegolfproblem <) / a>).

Ich habe %code% definiert, was eine unendliche Liste von Primzahlen ist, aber wenn ich naiv versuche, ein Paar Primzahlen wie unten zu wählen, endet der Prozess nie.

%Vor%

Mir ist klar, dass die Liste der generierten Primzahlen %code% ist. Grundsätzlich wird %code% zum ersten Element von %code% und sobald %code% erschöpft ist, wird es auf das zweite Element verschoben. Weil %code% unendlich ist, wird es niemals erschöpft sein!

Gibt es eine einfache Möglichkeit, List Comprehensions zu verwenden, um dieses Problem zu lösen? Gelingt das nicht, gibt es eine einfache Lösung?

    
___
3
Antworten

Zusammenstellung einer Liste aller Paare

Ich bin ganz neu bei Scala, da ich sehr wenig Erfahrung mit der funktionalen Programmierung durch Haskell hatte. Ich möchte versuchen, eine Liste aller möglichen Paare zusammenzustellen, die aus einer einzigen Eingabeliste erstellt wurden. Be...
03.08.2012, 21:11
5
Antworten

fold_tree in OCaml

Wie Sie vielleicht wissen, gibt es in OCaml Funktionen wie fold_left, fold_right, filter etc. Auf meinem Kurs in funktionaler Programmierung wurde Funktion namens fold_tree eingeführt, die etwas wie fold_left / right, nicht auf Listen, sonder...
15.11.2010, 22:32
5
Antworten

Welche funktionalen Sprachtechniken können in Imperativsprachen verwendet werden?

Welche Techniken oder Paradigmen, die normalerweise mit funktionalen Sprachen assoziiert werden, können auch in Imperativsprachen produktiv eingesetzt werden? z.B.: Rekursion kann in Sprachen ohne Tail-Call-Optimierung problematisch sein...
25.02.2009, 02:19
3
Antworten

Ist das Curryning dasselbe wie das Überladen?

Ist Currieren für die funktionale Programmierung dasselbe wie Überladen für die OO-Programmierung? Wenn nicht, warum? (mit Beispielen wenn möglich) Tks     
16.05.2012, 00:42
6
Antworten

Warum hat "map (filter fst)" den Typ "[[(Bool, a)]] - [[(Bool, a)]]]"?

Ich versuche zu verstehen, warum die Funktion %Vor% hat den Typ %Vor% Wie kann "filter fst" funktionieren, wenn der Filter eine Funktion erhalten muss, die einen Bool-Typ zurückgibt und fst nur das erste Element eines Tupels zurückgibt?...
19.03.2014, 11:45
3
Antworten

Warum bewertet harkell a in a b?

Die & gt; & gt; Der Operator für Monads in Haskell wird oft als definiert %Vor% Es kann verwendet werden, um Dinge wie zu drucken %Vor% Warum optimiert der Compiler den Wert von putStr "foo" nicht und bewertet nur putStrLn "bar" ? E...
15.12.2012, 12:51
2
Antworten

C # bis F #: Funktionales Denken vs. Polymorphie

Angenommen, ich hätte zwei Klassen: %Vor% Wir haben hier die Beschreibungen von zwei geometrischen Formen zusammen mit einer Operation in beiden. Und hier ist mein Versuch in F #: %Vor% Angenommen, ich habe eine Beobachtung über diese...
16.02.2014, 15:32
2
Antworten

Warum werden bei dieser Implementierung einer reinen Funktion keine externen Abhängigkeiten berücksichtigt?

Mir geht es gut mit dem pure function Konzept auf ziemlich einfachen Beispielen wie ... %Vor% Bei gleichen Argumenten ergibt sich dasselbe Ergebnis, was zu referenzieller Transparenz und gutem deterministischen Code führt. Aber dann b...
03.10.2016, 14:50
3
Antworten

Produzenten- und Konsumentenproblem in Haskell?

Ich möchte, wie können wir Produzenten / Konsumenten in einer funktionalen Programmiersprache wie Haskell implementieren? und wie wird es sich von einer Imperativ-Sprache unterscheiden? Mein Verständnis der funktionalen Programmiersprache ist pr...
12.08.2009, 19:46
5
Antworten

Lambdas innerhalb der Listenergänzungen

Ich wollte eine Liste von Lambdas haben, die als eine Art Cache für einige schwere Berechnungen dienen und dies bemerkt haben: %Vor% Obwohl %Vor% Das bedeutet, dass die Lambdas eindeutige Funktionen sind, aber sie haben alle den gleichen...
09.04.2012, 07:57
yii\base\ErrorException
Copied! Copy Stacktrace Search Stackoverflow Search Google Error

PHP Core Warningyii\base\ErrorException

PHP Startup: Unable to load dynamic library 'mongodb.so' (tried: /usr/lib64/php/modules/mongodb.so (/usr/lib64/php/modules/mongodb.so: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/mongodb.so.so (/usr/lib64/php/modules/mongodb.so.so: cannot open shared object file: No such file or directory))

$_GET = [
    'tag' => 'functional-programming',
    'page' => '26',
];

$_SESSION = [
    '__flash' => [],
];