Ich höre immer wieder viel über Funktoren in C ++. Kann mir jemand einen Überblick geben, was sie sind und in welchen Fällen sie nützlich
Der Begriff "Funktor" hat mehrere gemeinsame Bedeutungen: 1. Funktionsobjekt. In objektorientierten Sprachen ist dies eine Funktion, mit der Objekte so verwendet werden können, als wären sie normale Funktionen. 2. Eine mathematische Struktur, die sich mit Zuordnungen zwischen Kategorien befasst. Dieses Konzept ist eine nützliche Abstraktion in einigen Programmiersprachen, insbesondere in Haskell, wo es als Typklasse implementiert ist. 3. In OCaml ein Modul, das ein anderes Modul als Argument verwendet.
Ich höre immer wieder viel über Funktoren in C ++. Kann mir jemand einen Überblick geben, was sie sind und in welchen Fällen sie nützlich
Ich suche nach den Regeln, nach denen C ++ - Vorlagen als Argumente übergeben werden. Dies wird von C ++ unterstützt, wie in einem Beispiel hier gezeigt: #include <iostream> void add1(int &v) { v+=1; } void add2(int &v) { v+=2; } template <void (*T)(int &)> void...
Ich bin beim Lesen verschiedener Artikel über funktionale Programmierung einige Male auf den Begriff "Functor" gestoßen, aber die Autoren gehen normalerweise davon aus, dass der Leser den Begriff bereits versteht. Wenn Sie sich im Internet umschauen, erhalten Sie entweder übermäßig technische...
Während ich jemandem erkläre, was eine Typklasse X ist, bemühe ich mich, gute Beispiele für Datenstrukturen zu finden, die genau X sind. Also bitte ich um Beispiele für: Ein Typkonstruktor, der kein Functor ist. Ein Typkonstruktor, der ein Functor ist, aber nicht anwendbar. Ein Typkonstruktor, der...
Geschlossen. Diese Frage entspricht nicht den Richtlinien für Stapelüberlauf . Derzeit werden keine Antworten akzeptiert. Möchten Sie diese Frage verbessern? Aktualisieren Sie die Frage so dass es beim Thema für Stack - Überlauf. Geschlossen vor 4 Jahren ....
map :: (a -> b) -> [a] -> [b] fmap :: Functor f => (a -> b) -> f a -> f b liftM :: Monad m => (a -> b) -> m a -> m b Warum haben wir drei verschiedene Funktionen, die im Wesentlichen dasselbe
Dies ist keine Frage zur Lambda-Funktion. Ich weiß, dass ich einer Variablen ein Lambda zuweisen kann. Was bringt es uns, eine Funktion im Code zu deklarieren, aber nicht zu definieren? Zum Beispiel: #include <iostream> int main() { // This is illegal // int one(int bar) { return 13 + bar; }...
Ich habe über Monaden in der Kategorietheorie gelesen. Eine Definition von Monaden verwendet ein Paar benachbarter Funktoren. Eine Monade wird durch eine Rundreise mit diesen Funktoren definiert. Anscheinend sind Zusätze in der Kategorietheorie sehr wichtig, aber ich habe keine Erklärung für...
Ich bin neu in Haskell und lese über Funktoren und anwendungsbezogene Funktoren. Ok, ich verstehe Funktoren und wie ich sie verwenden kann, aber ich verstehe nicht, warum anwendbare Funktoren nützlich sind und wie ich sie in Haskell verwenden kann. Können Sie mir anhand eines einfachen Beispiels...
Das Applicative Typklasse repräsentiert laxe monoidale Funktoren, die die kartesische monoidale Struktur in der Kategorie der typisierten Funktionen beibehalten. Mit anderen Worten, angesichts der kanonischen Isomorphismen, (,)die eine monoidale Struktur bilden: -- Implementations left to the...
Die Kategorie der Mengen ist sowohl kartesisch monoidal als auch kokartesisch monoidal. Die Arten der kanonischen Isomorphismen, die diese beiden monoidalen Strukturen bezeugen, sind nachstehend aufgeführt: type x + y = Either x y type x × y = (x, y) data Iso a b = Iso { fwd :: a -> b, bwd ::...