지도를 사용할 때 haskell에있는 요소의 색인을 어떻게 얻을 수 있습니까?하스켈의 목록에있는 요소의 색인
예를 들어이 목록이 l = "a+bc?|(de)*fg|h"
이고 map or scanl
기능을 사용할 때의 정확한 색인을 알고 싶습니다.
지도를 사용할 때 haskell에있는 요소의 색인을 어떻게 얻을 수 있습니까?하스켈의 목록에있는 요소의 색인
예를 들어이 목록이 l = "a+bc?|(de)*fg|h"
이고 map or scanl
기능을 사용할 때의 정확한 색인을 알고 싶습니다.
우선 목록을 처리 할 때 색인이 필요한 경우 list는 색인과 같은 구조 (배열)가 아니기 때문에 차선의 알고리즘을 구현한다는 특정 신호입니다. 색인을 처리해야하는 경우 vector을 사용하는 것이 좋습니다. 니키타 볼코프의 답변을 개정
Prelude> zip [0..] "a+bc?|(de)*fg|h" :: [(Int, Char)]
[(0,'a'),(1,'+'),(2,'b'),(3,'c'),(4,'?'),(5,'|'),(6,'('),(7,'d'),(8,'e'),(9,')'),(10,'*'),(11,'f'),(12,'g'),(13,'|'),(14,'h')]
, 당신은 같은 기능을 사용할 수 있습니다
실제 문제에 관한 다음과 같은 코드의 int를 증가하여 목록의 항목을 쌍으로 다음 결과를 통해 매핑 할 수 있습니다 :
-- variant of map that passes each element's index as a second argument to f
mapInd :: (a -> Int -> b) -> [a] -> [b]
mapInd f l = zipWith f l [0..]
인덱스를 처리하는 것은 매우 일반적인 요구 사항입니다 (예 : 오류보고 용). –
차선의 알고리즘을 사용하지 않고리스트를 처리 할 때, 인덱스에는 많은 용도가 있습니다. 그래서 그것은 매우 불확실한 사인입니다. –