後有點hoogle-ING我想出了這一點:查找字符串中的一些子串的位置
import Data.List
substrPos xs str = map (\x -> findIndex (isPrefixOf x) $ tails str) xs
這應該給我,表示每個字符串的str
首次亮相指數列表在xs
。
例如爲:
Prelude Data.List> substrPos ["Foo", "Bar"] "FooBar"
[Just 0,Just 3]
的問題是我怎麼能寫更地道,也許我會失去拉姆達? 也許某種程度上(功能組成?)刪除包含isPrefixOf x
的parens? 也許寫點自由風格?
我應該如何去思考這些事情?
PS:我能想到的唯一修改(在首次寫入函數之後)是通過函數應用程序從tails xs
中去除了parens。
您可能想看看這會更合適,並在[codereview.se]獲得更多關注。 – icktoofay
謝謝,我會根據需要。 – Paul
雖然你可以通過其他幾種方式來寫(除了免費,你可以用另一種方式去使用列表理解),但我認爲你的代碼有足夠的習慣用法。儘管如果你的參數順序是相反的,我會建議丟失顯式的'xs'。 –