La maggior parte dei linguaggi di programmazione funzionali (es. Common Lisp, Scheme / Racket, Clojure, Haskell, Scala, Ocaml, SML) supportano alcune funzioni di ordine superiore comuni sugli elenchi, come map
, filter
, takeWhile
, dropWhile
, foldl
, foldr
(vedi ad esempio foglio di riferimento affiancato Common Lisp, Scheme / Racket, Clojure side-by-side , Haskell , Scala , OCaml e SML documentazione.)
Il C ++ 11 ha metodi o funzioni standard equivalenti negli elenchi? Ad esempio, considera il seguente frammento di Haskell:
let xs = [1, 2, 3, 4, 5]
let ys = map (\x -> x * x) xs
Come posso esprimere la seconda espressione nel moderno standard C ++?
std::list<int> xs = ... // Initialize the list in some way.
std::list<int> ys = ??? // How to translate the Haskell expression?
E le altre funzioni di ordine superiore sopra menzionate?
Possono essere espressi direttamente in C ++?