Size: a a a

2020 May 29

SN

Shub Niggurath in F# Chat
обрати внимание, что все примеры  используют классы
источник

SN

Shub Niggurath in F# Chat
хм, пардон.
источник

SN

Shub Niggurath in F# Chat
tupled form
источник

SN

Shub Niggurath in F# Chat
toPoint (p: Point) -
источник

SN

Shub Niggurath in F# Chat
это не tupled form, внезапно
источник

SN

Shub Niggurath in F# Chat
оно парсится как toPoint p - каррированная форма
источник

G

George in F# Chat
Можно так сделать, но тогда надо добавлять перегрузку на тот случай, если кортеж будет слева. Оно работает, но интересно, может, можно сделать то же самое проще
источник

SN

Shub Niggurath in F# Chat
перегруза со вторым аргументом должна сработать
источник

SN

Shub Niggurath in F# Chat
но в принципе, я не думаю, что перегруженный оператор для разных типов - хорошая идея
источник

G

George in F# Chat
Там опечатка, должно быть (1,2) + p1, но всё равно не работает
источник

SN

Shub Niggurath in F# Chat
George
Там опечатка, должно быть (1,2) + p1, но всё равно не работает
так ты ж не перегрузил еще. можешь код в текстовой форме выложить куда-то?
источник

G

George in F# Chat
источник

G

George in F# Chat
Идея была в том, чтобы не писать отдельную перезагрузку на случай, если кортеж слева или справа, или если складываются два Point'а
источник

SN

Shub Niggurath in F# Chat
для упражнения это ок, на практике я бы рекомендовал перегруженные конструкторы.
источник

SN

Shub Niggurath in F# Chat
щас
источник

G

George in F# Chat
Да, я просто пытаюсь понять, как язык работает.
источник

SN

Shub Niggurath in F# Chat
type Point(x: int, y: int) =
   member val X = x
   member val Y = y
   new() = Point(0, 0)
   static member (+) (first: Point, second: Point) =
       Point(first.X + second.X, first.Y + second.Y)

   static member (+) ((x: int, y: int), second: Point) =
       Point(x + second.X, y + second.Y)

   static member (+) (first: Point, (x: int, y: int)) =
       Point(x + first.X, y + first.Y)

let p1 = Point(x=1, y=1)
p1 + (1, 2)
(1, 2) + p1
источник

SN

Shub Niggurath in F# Chat
George
Да, я просто пытаюсь понять, как язык работает.
ну ты как бы выяснил уже. минус рекордов в ручном конструировании, для пользовательских типов это не слишком удобно
источник

G

George in F# Chat
А здесь перегрузка toPoint работает, и правда.
источник

G

George in F# Chat
Спасибо!
источник