2013-09-22 2 views
6

я хочу написать следующую функцию с помощью трубопровода:Pipeline пау вопрос оператора с

A = 1/Sum[1-k](x^2) 

так, когда я пишу:

//Adaptive step 
let a_Adaptive x = 
    x 
    |> Array.map (fun x -> x ** 2.0) 
    |> Array.sum 
    |> (**) -1.0 

F # интерпретирует (**) как многострочный комментарий, но я хочу использовать его как функция. Любые предложения?

+0

Вы можете проверить работу в незавершенном библиотеке кадра данных, что я работаю в Blue Mountian: https://github.com/BlueMountainCapital/FSharp.DataFrame. Используя тип 'Series', вы должны иметь возможность писать просто:' 1.0/(Series.sum (x ** 2.0)) '(он обеспечивает перегруженные операторы для структуры данных« рядов ») –

+1

В случае, если ваше утро в понедельник началось с отладки странной ошибки;) (**) -1.0, вероятно, не то, что вы хотите. Это становится (-1) ** x, тогда как вам нужно x ** (- 1). – stmax

ответ

7

Вам просто нужно добавить пробел перед **:

let a_Adaptive x = 
    x 
    |> Array.map (fun x -> x ** 2.0) 
    |> Array.sum 
    |> (**) -1.0 

От F # спецификации:

Для определения других операторов, которые начинаются с *, пробел должен следовать открывающей скобки; в противном случае (* интерпретируется как начало комментария:

пусть (* + *) х = (х + у)

Смежные вопросы