2016-10-16 1 views
2

안녕하세요, f #에서 연속 분수를 해결하는 방법은 목록이 아닌 seq를 사용하고 있습니까? 내 의견에, 당신은 단지 Seq.foldbackList.foldback을 변경하고 함수는 이제 순서를 받아 들일 것입니다 말했듯이f #에서 계속되는 분수 seq를 사용하여

let cfToScalar cf = List.foldBack (fun elem acc -> float elem + (1.0/float acc)) cf System.Double.MaxValue 

같은가 someting하지만 난 대신 목록

+9

그냥 List.foldback을 Seq.foldBack로 변경하십시오. – Ringil

+3

"무한 seq"가이 방법을 사용한다고 생각하지 마십시오. 'foldBack'은 컨테이너를 처음으로 완전히 트래버스해야합니다 (현재 [implementation] (https://github.com/fsharp/fsharp/blob/master/src/fsharp/FSharp.Core/seq.fs#L1227) 시퀀스를 변환합니다 배열 내부) – Sehnsucht

답변

2

의 서열을 사용하고 싶습니다. 또한 Sehnsucht가 말했듯이, foldback의 현재 구현은 배열로의 변환이 필요하므로 무한 시퀀스 인 입력은 작동하지 않습니다.

참고로, F# 4.0's normalization of the collection modules은 일반적으로 List/Array/Seq 모듈에서 대부분의 기능으로 하나의 모듈을 다른 모듈로 스왑 아웃 할 수 있기 때문에 가능합니다.