list =
| Cons of 'a * 'a list
| Nil
type 'a many =
| Cons of 'a some
| Nil
and 'a some =
{ head : 'a
; tail : 'a many
}
let list (a : 'a) : 'a list = Cons (a, Nil)
let many (a : 'a) : 'a many = Cons {head = a; tail = Nil}
т.е., что в одном и том же поле зрения есть типы с одинаковыми конструкторами/полями, и они друг друга не перекрывают и не нужно квалификаторов.
В F# такое есть?
нету, последний декларейшн побеждает
Обсуждают сегодня