type Alignment =
| Horizontal
| Vertical
let getMainAttr = function
| Horizontal -> fst
| Vertical -> snd
let check alignment =
let mainAttr = getMainAttr alignment
mainAttr (2,3) |> ignore
mainAttr (2.0, 3.0) // error
val getMainAttr : _arg1:Alignment -> ('a * 'a -> 'a)
mainAttr : (int * int -> int) // because of the value restriction
кажется, единственный способ сделать его общим - сделать его явным, например. let mainAttr x = getMainAttr alignment x
Однако, таким образом, он больше не использует замыкание, так что каждый раз, когда mainAttr
вызывается alignment
, необходимо проверять.
Есть ли способ проверить alignment
только один раз, а также быть общим?