インターレース要素を分離する関数を書いた。1つのループでインターレース要素を分離する
interlacedElems :: [a] -> ([a], [a])
interlacedElems xs = (f xs, f $ tail xs)
where f (x:_:xs) = x : f xs
f x = x
main = print $ interlacedElems "a1b2c3d4"
生成出力:私のコードで
("abcd","1234")
私は効果的に二回が、わずかに異なり、同じリストを毎回再帰、f
を定義し、それを2回使用しています。
私の質問は:私はこれを書くことができる方法はありますか?それはより効率的なので、あなたは馬鹿だと思いませんか?
脳の一部が漏出してしまったのを見てみると、私はいつも脳のジュースが全部あふれていると言い、お母さんは私に言いました。カーペット。
はあなたに素敵な人たちに感謝:)
これに対処したいだけです:「それが効率的なので、あなたは思いませんか?」。私の推測は「おそらく本当にない」と思われますが、それがあなたにとって重要なものかどうかを正確に測定すべきです!チェックアウト[基準](http://hackage.haskell.org/package/criterion)またはそれのようなもの。 –