经过一段时间的讨论后,我想出了这个:
import Data.List
substrPos xs str = map (\x -> findIndex (isPrefixOf x) $ tails str) xs
这应该给我一个索引列表,代表str
中每个字符串的xs
中的第一个外观。
E.g:
Prelude Data.List> substrPos ["Foo", "Bar"] "FooBar"
[Just 0,Just 3]
问题是我怎么能写得更惯用,也许我可以失去lambda?
也许以某种方式(功能组合?)删除封闭isPrefixOf x
的parens?
也许用点自由风格写它?
我该如何考虑这些事情?
PS:我可以想出的唯一修改(在第一次编写函数之后)是通过函数应用程序从tails xs
中删除parens。