Здравствуйте, zverjuga, Вы писали:
Z>приветствую. засел за изучение F#. язык и подход для меня новый, все переворачивается с ног на голову, потому прошу помощи. имеется следующий код
Z>Z>module Street
Z> type Point =
Z> | Position of x:float * y:float
Z> | Description of string
Z> | Radius of float
Z> | Lanes of uint32
Z>
Вообще, мне кажется вы не правильно используете описание типа,
Это так называемый алгебраический тип данных или по английски DU (дискримэйшн юнион),
т.е. объединение нескольких тип в один общий (родительский и абстрактный) — в вашем случае это Point.
Description, Radius и Lanes(может Lines?) не являеются подтипами Point(точка).
Лучше переписать так:
type Point =
| Position of x:float * y:float * Description : string * Radius : float * Lanes : uint32
Примечание: чаще всего указание типа излишне, ставьте тип только если не комплитица модуль.
или так:
type Position = { x:float ; y:float ; Description : string ; Radius : float ; Lanes : uint32}
type Point = Position
Здесь уже Position нормальный тип вида запись(record) — можете обращаться к полям Point через точку.