abstract-algebra

___ tag123haskell ___ Haskell ist eine funktionale Programmiersprache mit starker statischer Typisierung, verzögerungsfreier Auswertung, umfangreicher Parallelitäts- und Parallelitätsunterstützung und einzigartigen Abstraktionsfunktionen. ___ answer7688861 ___

Es hängt ein bisschen davon ab, wie Poly.T aussieht, aber Sie können eine Funktion vom Typ schreiben (zum Beispiel)

%Vor%

? Wenn dies der Fall ist, kann es sinnvoll sein, einen %code% -Typ zu haben, dessen Operationen zur Laufzeit fehlschlagen, wenn ihr Modul nicht übereinstimmt:

%Vor%

Dann kannst du so etwas in ganz normalem Haskell schreiben:

%Vor%

Natürlich ist das ein bisschen weniger typsicher. Aber es ist klar aus der Parametrisierung, dass %code% keine nicht übereinstimmenden Module einführen wird.

    
___ answer7692817 ___

Sie können Berechnungen in endlichen Feldern mit numerischen Numeric-Typen durchführen, zum Beispiel mit dem %code% -Paket:

%Vor%

Dieser Ansatz hat den Vorteil, dass für jeden numerischen Typ keine neue Vorlage-Haskell-Instanz erforderlich ist. Der Nachteil ist, dass es wahrscheinlich langsamer als die Template-Haskell-Lösung ist, da jede Operation die Größe des endlichen Feldes über ein Klassenwörterbuch umgeht.

    
___ qstnhdr ___ Polynomiale Faktorisierung in Haskell ___ tag123templatehaskell ___ Template Haskell ist eine GHC-Erweiterung von Haskell, die Metaprogrammierungsfunktionen zur Kompilierungszeit hinzufügt. Dies ermöglicht Benutzern, Programme zu schreiben, die ihr Programm zur Kompilierzeit erzeugen oder modifizieren: eine Form von Kompilierzeit-Makros. ___ tag123abstraktalgebra ___ Abstrakte Algebra ist das Fachgebiet der Mathematik, das algebraische Strukturen wie Gruppen, Ringe, Felder, Module, Vektorräume und Algebren untersucht. Es wird stark in verschiedenen Bereichen der Programmierung verwendet, z. B. Kryptographie. Alle mathematischen Fragen auf dieser Website sollten programmbezogen sein. ___ qstntxt ___

Mit hammars Hilfe habe ich ein Template-Haskell-Bit erstellt, das kompiliert

%Vor%

bis

%Vor%

Ich stehe jetzt vor einem Problem, von dem ich glaube, dass ich es nicht lösen kann.

Bemerkenswert an Polynomen ist, dass sie in den Rationalen irreduzibel sind, wenn sie nicht reduzierbar modulo einige Primzahl %code% sind. Ich habe bereits eine Methode, bei der Brute-Force versucht, Polynome über ein gegebenes (endliches) Feld zu faktorisieren.

Ich möchte versuchen, diese Funktion für mehrere Felder auszuführen. Hier ist was ich will:

%Vor%

Grundsätzlich möchte ich meinen Factoring-Algorithmus für eine große Anzahl von Definitionen von "division" ausführen.

Ich denke, das ist möglich mit TH, aber es scheint, als würde es ewig dauern. Ich frage mich, ob es einfacher wäre, meine arithmetischen Operationen als Parameter an %code% zu übergeben.

Alternativ scheint es, als könnte das etwas sein, mit dem das Newtype-Modul helfen könnte, aber ich kann mir nicht vorstellen, wie es funktionieren würde, ohne TH auf eine Art zu verwenden, die genauso hart wäre ...

Hat jemand irgendwelche Gedanken darüber, wie man das am besten erreicht?

    
___
2
Antworten

Polynomiale Faktorisierung in Haskell

Mit hammars Hilfe habe ich ein Template-Haskell-Bit erstellt, das kompiliert %Vor% bis %Vor% Ich stehe jetzt vor einem Problem, von dem ich glaube, dass ich es nicht lösen kann. Bemerkenswert an Polynomen ist, dass sie in den Ration...
07.10.2011, 13:15