목록을 통과하는 쉬운 방법은 무엇입니까? 내가 목록을 정렬 할 필요없이 그것을 할 수있는 방법이 나는 그것이 B목록을 통과하는 미란다가
["A","A","A","A","B","A","A","A","A"]
이었다 모르고 목록에 5 데이터에 액세스하고 싶었 말할 수?
목록을 통과하는 쉬운 방법은 무엇입니까? 내가 목록을 정렬 할 필요없이 그것을 할 수있는 방법이 나는 그것이 B목록을 통과하는 미란다가
["A","A","A","A","B","A","A","A","A"]
이었다 모르고 목록에 5 데이터에 액세스하고 싶었 말할 수?
미란다는 잘 모르겠지만 기능은 skip
과 take
입니다.
건너 뛰기 기능을 사용하지 않고 5 번째 요소를 처리 할 수 있습니다. 건너 뛰기 및 가져 오기를 사용할 수없는 경우 직접 만들 수 있습니다.
스킵 : Y가리스트의 항목 수보다 큰 경우에서의 원소 (Y)의 개수를 건너 뛰고, 그것은 빈 목록을 반환 인출이
: A의 요소의 제 Y 수가 얻어 목록에서 y가 목록의 항목 수보다 클 경우 전체 목록이 반환됩니다.
skip y [] = []
skip 0 xs = xs
skip y (x:xs) = skip xs (y-1)
take y [] = []
take 0 xs = []
take y (x:xs) = x : take (y-1) xs
elementAt x xs = take 1 (skip x xs)
나열 유도 데이터 유형입니다. 즉, 목록에 정의 된 함수 (예 : 번째 요소 인 요소)는 재귀에 의해 정의됩니다. 찾으려는 데이터 구조는 일정한 시간 조회를 허용하는 배열 인 것으로 보입니다. 목록의 색인에서 요소를 찾는 가장 쉬운 방법은 바로 다음과 같습니다.
lookup :: Int -> [a] -> Maybe [a]
lookup n [] = Nothing
lookup 0 (x:xs) = Just x
lookup n (x:xs) = lookup (n - 1) xs
이렇게하는 또 다른 방법은! 운영자.
이plist = [A,A,A,A,B,A,A,A,A]
다음 plist!4
을 실행하는 것은 당신에게 그 목록의 5 요소를 줄 것이다 :의 사용하면 다음과 같은 목록에 정의 된 데이터와 프로그램을 가지고 있다고 가정 해 봅시다. (4가 0,1,2,3,4를 포함하면 5 단위 임)
그래서 은 B를 반환합니다.