1年以上の精神的な騒ぎの後、私は最終的に私の一般的なプログラミングの必要性の大半のためにそれを私の主要な言語と見なすことができます。私は絶対にそれを愛する。Haskellと機能的にデータセットを比較する
しかし、私はまだ機能的な方法で非常に特定の操作を行うことに苦労しています。
簡単な例:
Set = [("Bob", 10), ("Megan", 7), ("Frank", 2), ("Jane", 11)]
私はお互いにこれらのエントリを比較したいと思います。 CやPythonのような言語では、おそらく複雑なループを作成するでしょうが、どのアプローチ(map、fold、list comprehension?)が関数型言語でもっとも効率的であるかわかりません。ここで
は、私が仕事を始めたコードのサンプルです:
run xs = [ someAlgorithm (snd x) (snd y) | x <- xs, y <- xs, x /= y ]
述語が自分自身でエントリを比較するから、リスト内包を保持しますが、それはすでにされているエントリを比較するための機能は非常に効率的ではありません比較した。例えば。 BobとMeganを比較し、MeganとBobを比較します。
この問題の解決方法についてアドバイスをいただければ幸いです。
あなたはそれらを比較したいと言っていますが、比較の結果で何をしたいのかは分かりません。あなたのサンプルから、あなたはリストから2つの異なる要素のすべての選択肢を見たいと思うようです。それですか? –
はい、ただし「逆」の選択はできません。私はBobとMegan、BobとFrank、BobとJane、そしてMeganとFrank、MeganとJane、そしてFrankとJaneを比較したいと思います。これは折り畳みで行うことができるもののように見えますが、わかりません。 –