Какие типы ожидаются от многоточечной нотации? - PullRequest
0 голосов
/ 19 сентября 2018

Рассмотрим:

#include "share/atspre_staload.hats"

fun plus_int_int(x: int, y: int): int = x + y

symintr .plus
overload .plus with plus_int_int

implement main0() =
        println!("4+4+4 = ", ((4).plus(4)).plus(4))

Это работает, и ясно, что это не может быть 4.plus(), поскольку 4. принимается как число с плавающей точкой.Я хотел бы знать, почему не работает (4).plus(4).plus(4)?ATS не находит допустимой перегрузки для второй .plus, что говорит мне, что он ожидает какой-то другой тип, кроме (int, int) -> int.К какому типу это относится?

1 Ответ

0 голосов
/ 20 сентября 2018

Текущий анализатор ATS2 интерпретирует

(4).plus(4).plus(4)

как

((4).plus)((4).plus)(4)

Я не могу легко исправить анализатор.Я подумаю об этом при реализации ATS3.

...