などなど、ほとんどの関数型プログラミング言語(例えば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.Sequence
Haskellでこれらの操作を実行しようとしたことがありますか?それは比較的いです。