Çoğu fonksiyonel programlama dilleri (mesela Common Lisp, Scheme / Raket, Clojure, Haskell, Scala, Ocaml, SML) gibi listelerde bazı ortak yüksek mertebeden fonksiyonları desteklemek map, filter, takeWhile, dropWhile, foldl, foldrmesela (bkz , Common Lisp, Scheme / Racket Clojure yan yana referans sayfası , Haskell , Scala , OCaml ve SML belgeleri.)
C ++ 11, listelerde eşdeğer standart yöntem veya işlevlere sahip mi? Örneğin, şu Haskell snippet'ini düşünün:
let xs = [1, 2, 3, 4, 5]
let ys = map (\x -> x * x) xs
Modern C ++ standardında ikinci ifadeyi nasıl ifade edebilirim?
std::list<int> xs = ... // Initialize the list in some way.
std::list<int> ys = ??? // How to translate the Haskell expression?
Yukarıda bahsedilen diğer üst düzey işlevler ne olacak?
Doğrudan C ++ ile ifade edilebilirler mi?
[a]. Başlangıç işlevini gizlemeniz, başlangıçta hacklemeniz veya farklı ve daha az sezgisel bir ad seçmeniz gerekir.
Functor, Foldableve Traversablebunu olabildiğince soyut bir şekilde başar. Data.Sequencebunların hepsinin bir örneğidir, yani bunu yapabilirsiniz fmap (\x -> x * x) xs. mapolduğu fmapbaşlayanlar için uzman.
Data.SequenceHaskell'de bu işlemleri hiç denediniz mi? Nispeten çirkin.