Синтаксис, который вы пытались использовать для указания типа возвращаемого значения, был неверным. Это должно выглядеть так:
let next_pos (position:Vector3<m>, velocity:Vector3<m/s>, dt:float<s>) : Vector3<m> =
position + (velocity * dt)
Чтобы указать, что функция возвращает значение типа Vector3<m>
, необходимо добавить аннотацию типа к результату, что делается записью let foo <arguments> : T = <expr>
. При добавлении аннотаций типов к параметрам их необходимо заключать в скобки (чтобы синтаксис не был неоднозначным). Как отметил Паоло в комментарии, вы использовали ->
, когда говорили, что dt
- это функция, потому что аннотация float<s> -> Vector3<m>
была прикреплена к параметру dt
.
.
Чтобы компилировать код, мне также пришлось добавить реализацию (+)
оператора к вашему Vector3
, но я предполагаю, что у вас уже есть это (и просто пропустил это при публикации вопроса).