Da greift so ein klein wenig das "Radio Eriwan": "Im Prinzip ja, aber..." Das geht nur so weit, dass man einen Pointer auf eine Funktion rumreichen oder zurückgeben kann. Die richtig interessanten Sachen, wie bspw. aus einer Funktion eine andere erzeugen, indem man bestimmte Parameter bindet, geht damit nicht, da man im Funktionszeiger keinen Zustand speichern kann. Solche Dinge wie bind1st in C++ gehen in C nicht so einfach. (Und selbst in C++ ist das ja schon nicht wirklich schick, weil das Resultat keine Funktion mehr ist, sondern ein Funktionsobjekt. Kleiner, aber feiner Unterschied, der mittlerweile da std::function aber sehr gut verdeckt wird). Wenn man dieses Prinzip (was man bspw. für Currying braucht) in voller Schönheit erleben will, dann braucht man Sprachen, die's von Haus aus unterstützen: JavaScript, Haskell, etc.
Geniale Videos!! Vielen vielen Dank!!
jetzt hab ichs endlich auch verstanden... tausend dank!!
Kann man mit Funktionszeigern nicht First-Order Functions emulieren in C++?
Da greift so ein klein wenig das "Radio Eriwan": "Im Prinzip ja, aber..." Das geht nur so weit, dass man einen Pointer auf eine Funktion rumreichen oder zurückgeben kann. Die richtig interessanten Sachen, wie bspw. aus einer Funktion eine andere erzeugen, indem man bestimmte Parameter bindet, geht damit nicht, da man im Funktionszeiger keinen Zustand speichern kann. Solche Dinge wie bind1st in C++ gehen in C nicht so einfach. (Und selbst in C++ ist das ja schon nicht wirklich schick, weil das Resultat keine Funktion mehr ist, sondern ein Funktionsobjekt. Kleiner, aber feiner Unterschied, der mittlerweile da std::function aber sehr gut verdeckt wird). Wenn man dieses Prinzip (was man bspw. für Currying braucht) in voller Schönheit erleben will, dann braucht man Sprachen, die's von Haus aus unterstützen: JavaScript, Haskell, etc.