Haskell에서 n 번째 요소 뒤의 두 위치로 목록을 분할하는 함수를 작성하려고합니다.Haskell splitAt 함수 (오류 처리기 사용)
지금까지 다음과 같은 코드가 있습니다 :
splitAt n (z:zs) | n > 0 = (z:zs', zs'') where (zs', zs'') = split (n-1) zs
이 기능은 또한 오류 메시지 "를 반환해야합니다 :
data Err e = Bad|Good e
splitAt:: Int -> [a] -> Err(([a],[a]))
splitAt 0 zs = Good(([], zs))
splitAt n _ = Bad
나는 다음과 같은 경우에 오류 메시지를 적용하는 방법을 잘 모르겠습니다 숫자가 목록의 길이보다 크거나 숫자가 음수이면 "Bad"입니다. 예 :
splitAt 6 [1,2,3,] = Bad
splitAt (-3) [1,2,3] = Bad
모든 조언을 주시면 감사하겠습니다.
왜 '오류'를 사용합니까? 그것이'어쩌면'에 대한 것이며, 당신이 그것을 사용하면 당신을 도울 수있는 전체 도서관이 있습니다. – Carcigenicate
하스켈을 처음 사용하고 다형성 유형을 사용하여 연습하고 싶습니다. – NoahSM1993
오, 알았습니다. Err 유형이 Haskell 's Maybe의 최소 버전이라는 것을 알아 두십시오. "실제 코드"에서 대신 Maybe를 사용하도록 선택하십시오. – Carcigenicate