2014-06-22 2 views
1

나는이 함께했다 hoogle - 보내고 약간의 : 나에게 모든 문자열의 str에 첫 등장을 나타내는 지표의 목록을 제공한다

import Data.List 
substrPos xs str = map (\x -> findIndex (isPrefixOf x) $ tails str) xs 

xs.

예컨대 :

Prelude Data.List> substrPos ["Foo", "Bar"] "FooBar" 
[Just 0,Just 3] 

질문은 내가 어쩌면 내가 람다를 잃을 수있다, 더 관용적 쓸 수있는 방법인가? 어쨌든 (기능 구성?) isPrefixOf x을 묶는 괄호를 제거 하시겠습니까? 포인트 프리 스타일로 작성 하시겠습니까?

이러한 것들을 어떻게 생각해야합니까?

추 신 : 기능 수정으로 나는 tails xs에서 괄호를 제거했습니다.

+0

[codereview.se]에서 이것이 더 적절하고 더 관심을 가지는지 알고 싶을 수도 있습니다. – icktoofay

+0

감사합니다. 필요한 경우 알려 드리겠습니다. – Paul

+0

다른 여러 가지 방법으로 작성할 수도 있지만 (예를 들어 무료로 사용할 수있는 방법 외에 다른 방법을 사용하고 목록의 이해도를 사용하는 등) 코드가 충분히 숙련 적이라고 생각합니다. 인수 순서가 다른 방향이라면 명시 적으로'xs'를 잃어 버리는 것이 좋습니다. –

답변

3

언제든지 pointfree 도구를 설치하여 직접 확인하고 결과 코드를 이해할 수 있습니다. 당신이 pointfree 스타일은 항상 관용적되지 않습니다주의해야하지만

map (($ tails str) . findIndex . isPrefixOf) xs 

:

Pointfree 도구는 나에게 다음과 같은 결과를 제공합니다. 어떤 사람들은 그것을 읽을 수없는 것으로 간주하고 pointless라고 생각합니다.

+0

그 도구를 지적 해 주셔서 감사합니다, 나는 그 결과를 이해했다고 생각합니다. 실제로 그 결과는 읽기가 훨씬 어려울 수 있지만, 나는 haskell을 사용한 나의 운동을 위해 이것을하고있다. – Paul