나는 F #을 배우는 중입니다. 올바른 유형의 유추 된 유형을 대체 할 때 왜 List.Filter
과 다른 유형을 추론하는지에 대해 머리를 감싸려고합니다. . 코드는 수천 단어에 해당합니다.F # 레코드로 유추 된 이상한 행동
type Account =
{ account : int
label : string }
type Journal =
{ account : int
period : string
debit : int
credit : int }
let outputJournal (journals: Journal List) (account:Account) =
let filtered = List.filter (fun x -> x.account = account.account) journals
filtered
지정된 계정에 대한 저널 목록을 필터링해야합니다. 그러나 outputJournal
함수는 List.filter
에 전달 된 journals
인수 아래의 오류를 출력합니다. "계정 목록이 필요하지만 '목록 업무 일지'가 지정되었습니다. '계정'유형이 '업무 일지'유형과 일치하지 않습니다."라는 오류가 있습니다.
필자는 왜 저널 목록을 필터링하려고하는지 분명히 생각하고있는 것처럼 혼란 스럽습니다. 형식 유추를 재정의하여 컴파일러에게 명확한 의도를 부여하거나 다른 의도를 내릴 수있는 방법이 있습니까 (어느 레코드에서 계정 필드의 이름을 바꾸는 것이 옵션이지만이를 피하고 싶습니다)?
매우 감사드립니다. 고맙습니다.
유형 추론은 오른쪽에서 왼쪽입니다. 주석 달기 타입 x –
@JohnPalmer 많이 감사드립니다! 미래에 알게되면 매우 도움이 될 것입니다. –
'journals |> List.filter (fun ...' –