문제

> seq { for i in 0..3 do yield float i };;
val it : seq<float> = seq [0.0; 1.0; 2.0; 3.0]
> seq [ for i in 0..3 do yield float i ];;
val it : seq<float> = [0.0; 1.0; 2.0; 3.0]

추신 : 왜 F#는 원래 "SEQ"접두사없이 시퀀스를 기대했지만 이제는 접두사를 원합니까?

도움이 되었습니까?

해결책

게시 한 두 가지 양식에 대한 자세한 설명 :

첫 번째는 직접 시퀀스 이해력 "seq {...}"를 사용합니다. "SEQ"부분은 이전에 선택 사항 이었지만 앞으로 지원되지는 않을 것입니다. "Async {...}"와 워크 플로 구문이 더 어렵거나 무언가를 만드는 것 같습니다.

이제 두 번째는 순수한 목록입니다.

> let x = [ for i in 0..3 do yield float i ];;

val x : float list

"seq"는 또한 기능입니다.

> seq;;
val it : (seq<'a> -> seq<'a>) = <fun:clo@0_1>

그리고 어떤 목록도 시퀀스이기 때문에 "seq [1; 2; 3;]를 수행하는 것은 SEQ 함수를 목록에 적용하는 것입니다. 목록 유형에서 SEQ로 캐스팅하는 것과 같습니다.

> x;;
val it : float list = [0.0; 1.0; 2.0; 3.0]

> seq x;;
val it : seq<float> = [0.0; 1.0; 2.0; 3.0]

편집 : SEQ 함수의 소스는 다음과 같습니다.

let seq (x : seq<_>) = (x :> seq<_>)

따라서 "Sorta Like Casting"은 "도우미 기능을 통해 캐스팅"을 읽어야합니다. 브래킷 내부의 시퀀스 인쇄에 관해서는, 나는 그것이 인쇄 인공물이라고 생각합니다.

다른 팁

첫 번째는 seq (ienumerable)입니다.

두 번째는 이상합니다. 'seq'를 없애면 목록 이해력 (목록)입니다. 그대로 쓸 이유가 없습니다. seq {} 또는 [] 또는 [| |] seq 또는 목록 또는 배열을 만듭니다.

Curlies-not-prefixed-seq는 언어의 다른 부분을 잠재적으로 모호하게 만들기 때문에 감가 상각되는 형태입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top