Haskellで3つの引数を削除する関数をカリー化するのに問題があります。
免責事項:コースワークではなく、今日これに苦労している誰かからこの質問をされました、そしてそれは私を悩ませてきました。
私たちが与えられたカスタムタイプ/関数は(タイプのみを覚えることができます)
type MyThing
= (Char, String)
type MyThings
= [MyThing]
funcA :: MyThings -> String -> String
funcB :: MyThings -> String -> Int -> String
私たちは始めました:
funcB as str n = iterate (funcA as) str !! n
そしてそれを次のように減らしました:
funcB as str n = iterate (funcA as) str !! n
funcB as str = (!!) . (iterate (funcA as)) str
funcB as = (!!) . (iterate (funcA as))
funcB as = (!!) . (iterate . funcA) as
その後、立ち往生。最後の引数の使用を避ける方法がわかりません。私は以前どこかで同様の状況を見たことがあり、解決策があったことを知っています。
Haskellの天才が私がばかである理由を指摘できることを願っています...