Monday 2 January 2017

Haskell Handelssystem

So machten diese Aufgabe bei Uni und ich habe ein ernstes Verlangen, die Aufgabe in Haskell zu tun. Es ist eine Simulation eines Aktienhandels-Motor. Die Situation ist, dass wir Daten kommen aus einer CSV und wir wollen jeden Datensatz zu analysieren und verarbeiten sie in einer bestimmten Weise abhängig von der Marktphase zugewiesen. Begründung für die Verwendung von haskell, ist, dass ich die Trading-Engine als schwere funktionale System. Ich habe haskell Erfahrung vor, aber nur geringe Erfahrung, nie etwas dieses groß. Wir wollten einen Thread ausführen, der die csvs in eine Warteschlange von unbearbeiteten Aufträgen importieren und dann das Hauptprogramm auf diese Warteschlange zur Verarbeitung jeder Bestellung zugreifen möchte. Allerdings wie könnte ich dies erreichen Ich weiß, in C Ich würde nur die Klasse, so konnte es die CSVParser-Klasse, die die unbearbeitete Warteschlange halten würde. Dies bedeutet auch, dass der Import-Thread kontinuierlich durch alle Marktphasen laufen würde oder bis der Import der csv-Datei abgeschlossen war. Jede Anleitung, wie dies zu erreichen wäre großartig (nicht auf der Suche nach einem vollständig typisierten Skript, nur was die Dinge in haskell Ich brauche, um zu betrachten) fragte, als nicht eine echte Frage von Ritch Melton. Dflemstr. Flexo 9830. Michael Petrotta. Graviton Mar 30 12 at 1:45 Es ist schwer zu sagen, was hier gefragt wird. Diese Frage ist zweideutig, vage, unvollständig, übermäßig breit oder rhetorisch und kann in ihrer jetzigen Form nicht vernünftig beantwortet werden. Um diese Frage zu klären, damit sie wieder geöffnet werden kann, besuchen Sie die Hilfe. Wenn diese Frage umformuliert werden kann, um die Regeln in der Hilfe zu passen. Bearbeiten Sie bitte die Frage. Statically typed Jeder Ausdruck in Haskell hat einen Typ, der zur Kompilierzeit bestimmt wird. Alle Typen, die zusammen durch Funktionsanwendung zusammengestellt werden, müssen übereinstimmen. Wenn sie don39t, wird das Programm vom Compiler abgelehnt. Typen werden nicht nur eine Form der Garantie, sondern eine Sprache für den Ausdruck der Konstruktion von Programmen. Alle Haskell-Werte haben einen Typ: Sie müssen den richtigen Typ von Werten an Funktionen übergeben, oder der Compiler lehnt das Programm ab: Sie können Bytes in Text decodieren: Aber Sie können nicht decodieren Text, der bereits ein Vektor von Unicode-Punkten ist: Rein Funktion Jede Funktion in Haskell ist eine Funktion im mathematischen Sinne (dh quotpurequot). Selbst Side-Effecting IO Operationen sind nur eine Beschreibung dessen, was zu tun ist, produziert durch reinen Code. Es gibt keine Anweisungen oder Anweisungen, nur Ausdrücke, die keine Variablen (lokal oder global) oder Zugriffsstatus wie Zeit - oder Zufallszahlen mutieren können. Die folgende Funktion übernimmt eine Ganzzahl und gibt eine Ganzzahl zurück. Durch den Typ kann es keine Nebenwirkungen überhaupt tun, kann es nicht mutieren alle seine Argumente. Die folgende Zeichenfolgenverkettung ist in Ordnung: Die folgende Zeichenfolgenverkettung ist ein Typfehler: Weil getLine Typ IO-String und nicht String hat. Wie quotName: quot ist. So durch die Art System können Sie nicht mischen und passen Reinheit mit Unreinheit. Typschluss Sie müssen nicht explizit alle Typen in einem Haskell-Programm schreiben. Typen werden abgeleitet, indem jeder Typ bidirektional vereinheitlicht wird. Allerdings können Sie Typen schreiben, wenn Sie wählen, oder fragen Sie den Compiler, um sie für Sie zu schreiben für praktische Dokumentation. Dieses Beispiel hat eine Typsignatur für jede Bindung: Sie können aber auch schreiben: Sie können auch Inferenz verwenden, um Zeitverluste zu vermeiden, um zu erklären, was Sie wollen: Typen geben eine Parser-Spezifikation frei, die folgende Eingabe wird nicht akzeptiert: Gleichzeitige Haskell eignet sich gut Zur gleichzeitigen Programmierung aufgrund ihrer expliziten Handhabung von Effekten. Sein Flaggschiff-Compiler, GHC, kommt mit einem leistungsstarken parallelen Garbage Collector und leichtgewichtigen Gleichzeitigkeit Bibliothek mit einer Reihe von nützlichen Parallelität Primitiven und Abstraktionen. Einfache Threads starten und mit der Standardbibliothek kommunizieren: Asynchrone API für Threads verwenden: Atomic Threading mit Software Transaktionsspeicher: Atomtransaktionen müssen wiederholbar sein, so dass beliebige IO im Typsystem deaktiviert sind: Funktionen don39t werten ihre Argumente aus. Dies bedeutet, dass Programme zusammen sehr gut zusammensetzen können, mit der Fähigkeit, Steuerelement-Konstrukte (wie wenn sonst) nur durch das Schreiben normaler Funktionen schreiben. Die Reinheit der Haskell-Code macht es einfach, Ketten von Funktionen zusammenzuschmelzen, so dass Leistungsvorteile. Definieren Sie Kontrollstrukturen leicht: Wenn Sie ein wiederholtes Ausdrucksmuster bemerken, wie Sie diesem einen Namen geben können, wie und verwenden Sie es dann mit der gleichen Wirkung wie der ursprüngliche Ausdruck. Erhalten Sie Code-Wiederverwendung, indem Sie faulen Funktionen verfassen. Es ist ganz natürlich, jede Funktion durch Wiederverwendung der Karte und / oder Funktionen auszudrücken: Wiederverwendung der Rekursionsmuster in der Karte. Filter. Fach Etc. Open-Source-Beitrag zu Haskell ist sehr aktiv mit einer breiten Palette von Paketen auf den öffentlichen Paket-Servern. Es gibt 6.954 Pakete frei verfügbar. Hier ist ein Beispiel für die häufigsten: DataDog bietet leistungsfähige, anpassbare 24 7 Metriken und Überwachung Integration für alle von Haskell. org, und klagt laut für uns, wenn die Dinge schief gehen. Schnelles 39s Next Generation CDN bietet einen niedrigen Latenzzugriff für alle Downloads von Haskell. org39s und die höchsten Verkehrsdienste, einschließlich des primären Hackage-Servers, der Haskell-Plattform-Downloads und vieles mehr. Rackspace bietet Compute-, Storage - und Networking-Ressourcen, die fast alle von Haskell. org in mehreren Regionen weltweit unterstützen. Galois bietet Infrastruktur, Fonds, administrative Ressourcen und hat historisch gehostet kritische Haskell. org Infrastruktur, sowie die Unterstützung der Haskell-Gemeinschaft mit ihrer Arbeit. DreamHost hat sich zusammengetan, um Haskell. org mit redundanten, skalierbaren Objekt-Speicher durch ihre Dream Objects-Service. Awake Networks baut eine Netzwerksicherheits - und - analyseplattform der nächsten Generation auf. Sie sind ein stolzer Sponsor des Sommers von Haskell und tragen breit zur Haskell Gemeinschaft bei. Haskell Book ist ein stolzer Sponsor der Summer of Haskell und bietet eine komplette und aktuelle Ressource für das Erlernen von Haskell - geeignet, ob Sie völlig neu in Haskell oder sind auf einer mittleren Ebene und wollen Ihr Verständnis zu vertiefen. Webmon bietet Überwachung und Eskalation für die Kern-haskell. org-Infrastruktur.


No comments:

Post a Comment