According to the specification, only the following types of literals can have values
sbyte < measure-literal > //signed byte int16 < measure-literal > int32 < measure-literal > int64 < measure-literal > ieee32 < measure-literal > //float32 ieee64 < measure-literal > //float decimal < measure-literal >
This is why unsigned types do not have measure types. In addition, to form a physical perspective, almost any value with units can be negative, so this seems like a reasonable alternative.
The reason the others are not working is the specification:
The F# core library defines the following types: type float<[<Measure>] 'U> type float32<[<Measure>] 'U> type decimal<[<Measure>] 'U> type int<[<Measure>] 'U> type sbyte<[<Measure>] 'U> type int16<[<Measure>] 'U> type int64<[<Measure>] 'U>
therefore, you cannot do single<1> since there is no corresponding type.
source share