2012-10-25 1 views
3

2008 년부터 F # 3.0의 Mono 3.0에서 F # app 인 TrueSkill을 구축하고 있습니다. 내가 할 두 가지 오류가레거시 F # 앱에 ResizeArray를 어떻게 제공합니까?

fList |> ResizeArray.iter (fun f -> f.ResetMarginals())

let sumLogS = fList |> ResizeArray.fold_left (fun acc f -> acc + (f.LogNormalisation())) 0.0 있습니다.

F # 1.9의 경우 ResizeArray은 PowerPack에서 제공되었습니다. 이제 github에 PowerPack이 있습니다. 그러나 표준 모노 문서에 따르면 ResizeArray<T>List<T>의 별칭 일뿐입니다. 원래 ResizeArray을 가져와야합니까? 그렇다면 ResizeArray.fs을 사용하여 PowerPack에서 어떻게 할 수 있습니까? ListResizeArray 사이의 현재 관계는 무엇입니까?

+0

'List <'t> == ResizeArray <'t>'그러나 무료로 ('.iter, .fold_left1') 메소드를 얻지 못하므로 Powerpack을 포함시켜야합니다. –

답변

3

분명히하기 위해 ResizeArray<'T>은 .NET에서 List<'T>의 별명입니다. ResizeArray 모듈의 고차 함수 만 F # PowerPack에서 제공합니다.

this module에 종속되지 않으므로 ResizeArray.fs을 프로젝트에 직접 복사하는 것이 좋습니다. 예를 들어 새로운 ResizeArray 모듈과 일치하도록 일부 함수 이름을 변경해야 할 수 있습니다. fold_leftfoldfold_rightfoldBack으로 변경하십시오.

+0

복사하고 ResizeArray.fs를 MonoDevelop에서 프로젝트에 추가하고 fold_left의 이름을 fold로 변경했습니다. 아직 ResizeArray.iter 및 fold는 여전히 발견되지 않습니다. 네임 스페이스 Microsoft.FSharp.Collections가 공유됩니다. 다른 이름으로 바꾸면 포함 파일에서 찾을 수 없습니다. 호출자 파일에 새로 복사 된 ResizeArray.fs가 표시되는지 확인하려면 어떻게해야합니까? – Alexy

+0

F # Powerpack (혼동을 피하기 위해) 참조를 제거하고 프로젝트 순서에서 모듈을 호출하기 전에'ResizeArray.fs'가 나타나는지 확인하십시오. – pad

+0

쿨, 작동합니다. 이제이 ResizeArray.fs를 GAC에 설치하고 참조하십시오. – Alexy

관련 문제