などなど、ほとんどの関数型プログラミング言語(例えばCommon Lispの、スキーム/ラケット、Clojureの、ハスケル、スカラ座、OCamlで、SML)リスト上のいくつかの一般的な高階関数をサポートするには、map、filter、takeWhile、dropWhile、foldl、foldr(例えば参照、Common Lispの、スキーム/ラケットをClojureの並列リファレンスシート、Haskell、Scala、OCaml、およびSMLドキュメント。
C ++ 11には、リストに同等の標準メソッドまたは関数がありますか?たとえば、次のHaskellスニペットを考えます。
let xs = [1, 2, 3, 4, 5]
let ys = map (\x -> x * x) xs最新の標準C ++で2番目の式をどのように表現できますか?
std::list<int> xs = ... // Initialize the list in some way.
std::list<int> ys = ??? // How to translate the Haskell expression?上記の他の高階関数はどうですか?
C ++で直接表現できますか?
                  「それは比較的いです。」:何と比較して?
                
                
                  
                    —
                    ジョルジオ
                    
                  
                
              
                  おそらくあなたは正しいかもしれませんが、この質問のトピックは、HaskellのData.Sequenceに類似した関数を実装する方法ではなく、C ++で共通リストの高階関数を表現する方法です。
                
                
                  
                    —
                    ジョルジオ
                    
                  
                
              
                  @delnan Haskellのアプローチははるかに一般的であると主張します。
                
                  
                    —
                    アレック
                    
                  
                
              Functor、FoldableとTraversable私は考えることができるよう抽象的なAの方法としてでこれを実現します。Data.Sequenceこれらすべてのインスタンスであるため、を実行できますfmap (\x -> x * x) xs。mapされfmap、初心者に特化。
                
Data.SequenceHaskellでこれらの操作を実行しようとしたことがありますか?それは比較的いです。