Re: F#, вычисление дистанции между узлами дерева
От: varenikAA  
Дата: 23.07.19 06:00
Оценка:
Здравствуйте, 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 через точку.
☭ ✊ В мире нет ничего, кроме движущейся материи.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.