을 사용하는 통계 모델의 단위 통계 모델의 경우 일관되게 측정 단위를 사용하려면 내가 가지고있는 데이터의 수를 인코딩해야합니다.측정 단위 및 F #
type DataSet<[<Measure>] 'x, [<Measure>] 'y, [<Measure>] 'n> =
DataSet of Matrixu<'n,'x> * Vectoru<'n,'y>
나는 다음 두 데이터 집합
static member (+) (a:DataSet<'x,'y,'n1>,b:DataSet<'x,'y,'n2>):DataSet<'x,'y,n> = ...
에게 병합 함수를 정의 할 수 있습니다하지만 다른 크기의 데이터 세트의 unknonw 수를 병합 할 수 있어야합니다. 어떻게 그러한 함수를 정의합니까?
시퀀스가 1 종류 만 있기 때문에 순진한 방법이 실패하므로 크기를 정적으로 정의해야합니다.
static member merge (ar:DataSet<'x,'y, ??? > seq) : DataSet<'x,'y, 'n> =
if seq.empty, etc...
let head = ar |> Seq.head
let others = ar |> Seq.skip 1
others |> Seq.fold (fun st el -> st + el) head
아니면 그냥 특정 규칙을 추가하고 데이터 크기를 관리하지 않아야합니다. 즉, 응용 프로그램 코드에 커스텀 차원 관리를 추가하는 것은 더러운 것입니다. 그리고 처음에는 깨끗한 차원을 갖는 점이 폐허가되었습니다!
조치 'n'은 여기서 어떤 역할을합니까? 데이터의 수입니까? 그것은 나에게 측정 단위처럼 들리지 않습니다. 다른 질문 :'정적 멤버 (+)'에서''n1'과''n2'와 관련된 리턴 타입에서'n'은 어떻게됩니까? – Joh
실제로 n은 데이터의 수입니다. 행렬의 '타입'을 묘사하는 행렬 n을 m으로 나타냅니다 ... – nicolas
+ 정적, 우리는 n = n1 + n2를 가질 것입니다 (자연수와 bijection의 유형 사이의 일부 연산의 경우). 그것은 집행 가능하다고 생각합니다, 그래서 저는이 차원을 자유롭게했습니다. – nicolas