특정 위치에서 만 Nothing
항목이, Maybe n
의 무한한 목록의 목록 takeWhile Nothing
첫째 :하스켈 : 어쩌면
howMany :: (Int -> Bool) -> [Maybe Int] -> Int
이 내가 명시 적으로 재귀와 함께 온 것입니다
고급 하스켈 추상화를 사용하여이를 표현하는 더 좋은 방법이 있는지 궁금합니다.
특정 위치에서 만 Nothing
항목이, Maybe n
의 무한한 목록의 목록 takeWhile Nothing
첫째 :하스켈 : 어쩌면
howMany :: (Int -> Bool) -> [Maybe Int] -> Int
이 내가 명시 적으로 재귀와 함께 온 것입니다
고급 하스켈 추상화를 사용하여이를 표현하는 더 좋은 방법이 있는지 궁금합니다.
다음과 같이 작동합니다.
import Data.Maybe (isJust, maybe)
howMany p = length . filter (maybe False p) . takeWhile isJust
또는 대안 당신은 또한 fromJust
대신 maybe
사용할 수 있습니다. 일반적으로 fromJust
과 같은 부분 기능은 사용하지 않는 것이 좋지만이 경우 안전합니다.
import Data.Maybe (isJust, fromJust)
howMany p = length . filter (p . fromJust) . takeWhile isJust
왜 'takeWhile isJust'를 수행하지 않고 이후에 계산합니까? – Carcigenicate
'Just '생성자를 매치하지 않고서 어떻게'Maybe '리스트 안에 predicate를 넣고 세는 것이 좋을까요? –
Nothings를 걸러 낸 다음 결과 목록을 접고 justs를 풀고 카운트합니다. – Carcigenicate