하스켈에서 서곡 기능의 길이 또는 (!!)를 사용하지 않고 목록의 일곱 번째 요소를 추출하는 방법. haskell의 목록에서 요소를 추출하는 함수를 작성하십시오.
다음
는 내가 지금까지 무엇을 가지고 :element7 :: [a] -> Int -> a
element7 [] _ = error "list too short"
element7 (_:xs) 7 = element7 xs (k - 1)
하스켈에서 서곡 기능의 길이 또는 (!!)를 사용하지 않고 목록의 일곱 번째 요소를 추출하는 방법. haskell의 목록에서 요소를 추출하는 함수를 작성하십시오.
다음
는 내가 지금까지 무엇을 가지고 :element7 :: [a] -> Int -> a
element7 [] _ = error "list too short"
element7 (_:xs) 7 = element7 xs (k - 1)
좋아이의 우리가
element :: [a] -> Int -> a
element [] _ = error "list too short"
element (_:xs) 7 = element7 xs (k - 1)
이 무엇을 시작하자 우리는 (7)에있을 때 이제 마지막의 경우는,하지만 우리는있어 0보다 큰
element (x:xs) n | n > 0 = element xs (n-1)
다음 숫자에 정말 관심이 n
가 1이면, 우리는 단지 그가을 반환 광고
element (x:xs) n | n > 0 = element xs (n-1)
| n == 0= x
| otherwise = error "Index out of range"
지금 우리는 단지 7 요소를 찾기위한 좋은 바로 가기를 만들 수 있습니다
seventh xs = element xs 6
여기
그래서'!!'대신에 함수를 다시 구현하고'element'라고 부릅니다 (그리고 1부터 시작하는 인덱스를 사용합니다). ;-) –
"no prelude functions"제약 때문에 여기를 떠날 것입니다. 그리고 그것은 나를 괴롭 히고 있기 때문에 0으로 바꾸고 있습니다. – jozefg
OP는 Prelude 함수를 사용하지 않고'Prelude functions length or (!!)'를 써서 Prelude 함수를 사용하는 것이'length'와 '!! '. –
seventh (one:two:three:four:five:six:seven:rest) = seven
'7' (_ : _ : _ : _ : _ : _ : _ : _ : _ : _ : _ : x : _) = x'과 같이 관심이없는 값을 표시하려면'_'을 사용하고, 오류 "목록이 너무 짧습니다". –
나는 안전함을 거의 만들었지 만, 조금 우스꽝 스럽다. [a] -> 아마 a '. –
완전히 명명 된 인수를 사용하는 것은 교육적이고 자기 다큐멘터리입니다. –
이 해결책은 귀하의 시도에 근접하려고합니다 :
element :: [a] -> Int -> a
element [] _ = error "list too short"
element (x:_) 1 = x
element (_:xs) i = element xs (k - 1)
실행중인 문제는 무엇입니까? – Swiss
기본적으로 서곡 기능 (!!)을 다시 구현합니다. 이것이이 운동의 목표 인 것으로 보인다. –