하나의 단어가 단어 목록의 접두사 인 횟수를 반환하는 함수를 만들고 싶습니다. 예를 들어, 단어 "go"와 단어 목록 [ "ace", "going", "gone", "golf"]에 대해서는 3을 반환해야합니다 :내가 어떻게 haskell에서 접두사를 셀 수 있습니까?
numberOfPrefixes _ [] = error ("Empty list of strings")
numberOfPrefixes [] _ = error ("No word")
numberOfPrefixes (x:xs) (y:ys)
| isPrefixOf (x:xs) y = 1 + numberOfPrefixes(x:xs) ys
| otherwise = 0
그러나 이것은 단어 목록의 첫 번째 요소가 실제로 접두사 인 경우에만 작동합니다. 첫 번째 요소가 접두어가 아니면 전체가 분리됩니다. 이 권리를 만드는 어떤 도움? 여기
isPrefixOf :: (Eq a) => [a] -> [a] -> Bool
isPrefixOf [] _ = True
isPrefixOf _ [] = False
isPrefixOf (x:xs) (y:ys) = x == y && isPrefixOf xs ys
입니다. 안녕하세요, 저는 새로운 답변을 알고 있습니다.하지만 내 대답에 대한 질문이 있으면 내 답변에 대한 의견으로 게시하여 볼 수 있습니다. :) 둘째로, 들여 쓰기를 수정하고'y : ys'를 수표에서'y'로 변경하면 잘 작동합니다. – jozefg
그래서 지금 다른 질문이 있습니다. 어떤 도움이 필요합니까? 그리고 귀하의 조언을 주셔서 감사합니다, 그것은 매우 도움이되었다 –
별도의 질문으로 이것을 게시하고 나는 행복 할거야. – jozefg