Почему при компиляции появляется сообщение «Не удается объединить t 'с типом« f32 »» и как мне это решить? - PullRequest
1 голос
/ 30 мая 2019

Я пытаюсь проверить, находится ли точка внутри круга с началом координат в 1,1. Однако, когда я пытаюсь просто вычесть '1,0' из координат, я получаю ошибку:

Error at exercise3.fut:2:6-14: Cannot unify 't₂' with type f32' ('t₂' must be one of i8, i16, i32, i64, u8, u16, u32, u64 due to use at exercise3.fut:2:6-30). When matching type t₂ with f32

Что мне нужно сделать, чтобы компилятору было удобно работать с "x-1.0" (где x типа f32)?

Я пытался изменить тип ввода на 't' и написать x- (1.0f32) и т. Д., Но все равно получаю те же или похожие ошибки.

Это код, который дает проблему:

let hit_register (x : f32) (y : f32) : bool =
    ((x - 1.0)^2.0 + (y - 1.0)^2.0) <= 1.0

Похоже, достаточно простая функция / проблема, но я не смог найти никакой помощи с этим уже доступны в Интернете.

1 Ответ

2 голосов
/ 30 мая 2019

Оператор ^ обозначает побитовые xor аргументов целочисленного типа.

Оператор возведения в степень равен **. Он определен для всех числовых типов.

Ссылка: https://futhark.readthedocs.io/en/latest/language-reference.html

...