次の例で、再帰の代わりにリスト内包表記を使用できるかどうか知りたいです。
replaceFirst
要素とリストを取り込んで、リストから最初に出現する要素を置き換える関数。
これは、次のように再帰を使用して実行できます。
replaceFirst _ [] = []
replaceFirst elem y (x:xs) | x==y = (elem:xs)
| otherwise = x:replaceFirst elem y xs
私の質問は、この再帰関数、またはリスト内の要素の最初の出現に作用する同様の再帰関数を、リスト内包関数に置き換えることができるかどうかです。なぜまたはなぜそうではないのですか?(私は実際のコードよりも推論に関心があります)。