Frage

Die Edison-API und Core-Module sind die Haskell Implementierung von rein funktionalen Daten Strukturen

Haben die F # und nativen .Net-Datenstrukturen decken ausreichend Anwendungsfälle in der Edison-API und Core?

Gäbe es keinen Nutzen sein, um zu versuchen, die API und CORE Haskell Module F # zu portieren?

War es hilfreich?

Lösung

Ich habe nicht gelesen das Papier auf edison , aber wenn es nichts anderes als die Haskell Implementierung von rein funktionalen Datenstrukturen, es nicht mehr Sinn Port macht den SML-Code, ist in das Buch / These? Es sollte einfacher sein, als Code Haskell Portierung, die Strenge mit Anmerkungen versehen werden müssen, während F # wird für Faulheit kommentierten haben.

Die Sprache durch das Buch verwendet wird, ist SML mit Syntax-Erweiterungen für faule Auswertung. F # bietet die Hälfte dieser Erweiterungen nativ:

> let x = lazy 12;;
val x : Lazy<int> = <unevaluated>
> match x with
  | Lazy(n) -> n;;
val it : int = 12
> x;;
val it : Lazy<int> = 12

Um das Buch der fun lazy Notation zu umwandeln, ändern diese:

fun lazy plus ($m, $n) = $m + n

Um dies zu:

let plus (m',n') = lazy (
  match (m',n') with
  | (Lazy(m), Lazy(n)) -> (lazy (m + n)).Force())

(Siehe Seite 33 im Buch). Die Unterschiede zwischen SML und F # sind kleinere Syntax, so sollte die Übersetzung einfach sein.

Als ob es lohnt sich, sind die meisten der Datenstrukturen in Okasaki Buch sehr spezialisiert, so dass sie wahrscheinlich nicht bereits in .NET existieren, auch als F # 's unveränderliche Set und Map. Es wäre für die Menschen lohnen, die diese Datenstrukturen benötigen.

Andere Tipps

Eine Revision dieser Frage Monate später, stelle ich fest, dass

http://lepensemoi.free.fr/index. php / tag / rein Funktionaldatenstrukturen

jemand hat viele von ihnen auf diesem Blog umgesetzt werden.

ich nicht folgen Sie den Link, wenn ich zumindest einen winzigen familiarty mit der Arbeit oder Okasaki haben. Also diese ganze Antwort ist wild spekulativ (I off base in meinen Annahmen über sein kann, was in dem Edison API).

Ich erwarte, dass es ‚einige Vorteile‘ in dem Sinne, dass Menschen wie ‚Referenzimplementierungen von gemeinsamen FP Datenstrukturen‘ in ‚neuen Sprachen‘ zu helfen, neue Sprachen zu lernen.

Wie für die Verwendung in der Praxis (statt Pädagogik), erwarte ich, dass einige von ihnen nützlich sind, obwohl es einige F # und .Net-APIs, die als nützlich oder nützlicher für viele Szenarien sein können. Das Haupt Paar ‚partienweise‘ Funktionalitäts überlappende ich die F # sind unveränderlich Sammlungen (Set und Map) erraten würde, sowie das .Net 4.0 gleichzeitige Sammlungen (wie ConcurrentQueue).

Natürlich werden Sie auch einige Schnipsel im Web finden, wie Jomo der unveränderliche Warteschlange .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top