2012-08-08 4 views
4

조항이 일반 측정 단위를 사용하는 DU를 정의 할 여지가 있습니까? 예 :F #에서 일반적인 측정 단위로 유니온 절을 지정하는 방법은 무엇입니까?

type MyDU = 
| A of int<_> 
| B of float<_> 

이 코드는 컴파일되지 않습니다,하지만 난 측정의 일반적인 단위로 숫자 값에 걸리는 일반 기능을 지정할 수 있습니다 각 노동 조합 절은 궁극적으로 기능입니다

let f (n : int<_>) = n * n;; 
val f : int<'u> -> int<'u^2> 

고려를 그 of 뒤에 지정된 형식을 개인 형식 MyDU.A 또는 MyDU.B으로 변환합니다.이 형식이 함수 정의에서 작동하지만 형식 정의에서는 작동하지 않는 특별한 이유가 있습니까?

내가 여기서하고 싶은 일을 할 수있는 방법이 있습니까? 그렇지 않다면 왜 그렇게 효과가 없을 지 알고 싶습니다.

type MyDU<[<Measure>] 't> = 
    | A of int<'t> 
    | B of float<'t> 

int<m>int<s>에 다른 beacause를 이것은 -

덕분에,

답변

11

당신은 일반적인 노동 조합을 사용해야합니다. 이 유형을 측정 할 특정 아니라고

주, 또한

+0

이 감사 등의 목록을 만들 수있는 조합을 사용하여 같은 것들을 적용 - 그것은 정확히 내가 무엇을 찾고 있어요! – theburningmonk

관련 문제