2013-06-27 3 views
2

I이 F # 1 함수 선언 경우F # 형 추론 미스

let extractColumn col (grid : List<Map<string, string>>) = 
    List.map (fun row -> row.[col]) grid 

컴파일러 불평 :

오류 FS0752를 '. EXPR [IDX] 오퍼레이터 온 사용되고을 이 프로그램 포인트 이전의 정보에 기초한 불확정 유형의 객체. 람다의 row 매개 변수의 유형 약어를 추가 추가 형 제약

을 추가하는 것을 고려 그것을 해결

let extractColumn col (grid : List<Map<string, string>>) = 
    List.map (fun (row : Map<string, string>) -> row.[col]) grid 

이유는 extractColumn 함수의 grid 매개 변수의 row의 유형을 얻을 수 없다?

답변

8

F #의 유형 추정은 왼쪽에서 오른쪽으로 그리고 위에서 아래로 작동합니다.

유형 gridList.map (fun row -> row.[col]) 부분에는 없습니다. 예상대로

let extractColumn col (grid : Map<string, string> list) = 
    grid |> List.map (fun row -> row.[col]) 

이 예를 들어 작업을합니다 : 파이프 연산자 |>를 사용

.