タグ付けされた質問 「function-composition」


7
Haskell関数構成(。)および関数適用($)イディオム:正しい使用
私はReal World Haskellを読んでいて、終わりに近づいていますが、スタイルの問題が(.)と($)演算子との関係で私を悩ませています。 他の関数の合成である関数を書くときは、次のように書きます。 f = g . h しかし、これらの関数の最後に何かを適用すると、次のように書きます。 k = a $ b $ c $ value しかし、本はそれをこのように書きます: k = a . b . c $ value 今、私にはそれらは機能的に同等に見え、私の目にはまったく同じことをしています。ただし、見れば見るほど、本のように関数を記述している人々が多くなります。(.)最初に構成し、最後にのみ($)値を追加してロットを評価します(多くのドル構成では誰も行いません)。 。 すべての($)記号を使用するよりもはるかに優れている本の方法を使用する理由はありますか?または、私がここで得ていないいくつかのベストプラクティスはありますか?それとも不必要ですか、まったく心配する必要はありませんか?

6
Haskellのドット演算子:詳細な説明が必要
私はこのHaskellコードでドット演算子が何をしているのかを理解しようとしています: sumEuler = sum . (map euler) . mkList ソースコード全体は以下のとおりです。 私の理解 ドット演算子は、2つの関数sumとの結果map eulerおよびの結果をmkList入力として受け取ります。 しかし、sum関数ではなく、関数の引数ですよね?では、ここで何が起こっているのでしょうか? また、何をし(map euler)ているのですか? コード mkList :: Int -> [Int] mkList n = [1..n-1] euler :: Int -> Int euler n = length (filter (relprime n) (mkList n)) sumEuler :: Int -> Int sumEuler = sum . (map …

2
Haskellコードのフラグメントを組み合わせて全体像を把握する
これは私がどこかで見つけたコードですが、これがどのように機能するか知りたいです: findIndices :: (a -> Bool) -> [a] -> [Int] findIndices _ [] = [] findIndices pred xs = map fst (filter (pred . snd) (zip [0..] xs)) 出力:findIndices (== 0) [1,2,0,3,0]==[2,4]、ここpredで(==0)&xsは[1,2,0,3,0] 私の理解の一部を紹介します。 (zip [0..] xs) 上記の行が行うことは、リスト内のすべてにインデックスを付けることです。上記の入力の場合、次のようになります[(0,1),(1,2),(2,0),(3,3),(4,0)]。 (pred . snd) これはのようなものであることがわかりましたpred (snd (x))。私の質問は、xリストはzip行から作成されていますか?私はイエスに傾いていますが、私の推測は薄っぺらです。 次は、私の理解であるfstとsnd。そんなこと知ってる fst(1,2) = 1 そして snd(1,2) = …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.