Pointfreeをいじっていると、理解できないようなコードが提示されました。
:pl map (\x -> x * x) [1..10]
-- map (join (*)) [1..10]
私の主な問題は、ここでどのように機能するかがわからないことjoin
です。モナドラッピングの1つのレイヤーを「削除」することを理解しています(m (m a)
to m a
)。のようなもの[1..10] >>= (\x -> [x * x])
になると思いますが、「余分なレイヤー」がどのように導入されるかはよくわかりません。私はそれを取得しますがjoin x = x >>= id
、それが各値を「複製」し(*)
て2つの引数を取得する方法にまだこだわっています。これは約30分間私を悩ませてきました.私はすべてのパズルのピースを持っているように感じますが、それらを組み合わせることができないようです.
PS 心配しないでください。私はこの無意味なバージョンを実際には使用しません。これは純粋な好奇心であり、Haskell をよりよく理解しようとする試みです。