어떤 종류의 Record
있다범위
getAssignment :: (Year, Month, Day) -> [Record] -> [Record]
getAssignment (year, month, day) = filter matchDate
where matchDate (BirthdayRecord _ (Birthday month day)) = True
matchDate (DatingRecord (DatingDate year month day) _) = True
matchDate _ = False
getAssignment
의이 정의는 오류로 인해 올바르지 않습니다 :
warning: Defined but not used: `year'
실제로 놀랍지 만, 01 패턴 일치 부분이 getAssignment
인 경우이고 matchDate
인 경우 패턴 일치 부분이 year
이 아닙니다.
따라서 범위 범위는 year
입니다. 변수가 시작되고 끝났습니까? where
섹션 때문에 발생합니까?
btw이 오류는 (year, month, day)
개의 변수를 사용하여 여러 번 사용하면 피할 수 있습니다.
getAssignment' :: (Year, Month, Day) -> [Record] -> [Record]
getAssignment' date = filter (matchDate date)
where matchDate (_, m, d) (BirthdayRecord _ (Birthday month day)) =
month == m && day == d
matchDate (y, m, d) (DatingRecord (DatingDate year month day) _) =
year == y && month == m && day == d
matchDate _ _ = False
어떻게 다시 쓸 수 있습니까?
'달'및 '달'변수를 억제하는 방법이 있습니까? –
죄송합니다. 독자 분의 의견을 이해할 수 없습니다. 당신이 원하는 것에 대해 더 자세히 설명해 주시겠습니까? – dave4420
'f x = x == y' 정의를 보았을 때'x' 변수를 중복 사용하기 때문에'f y == True'처럼 다시 쓰려고합니다. 이 경우 나는 'year', 'month'및 'day'변수를 없애기 위해 동일한 트릭을 사용하고자합니다. –