Я пытаюсь масштабировать последовательность по первому элементу последовательности, поэтому первый элемент всегда будет один, а затем последующие элементы представляют собой отношение первого элемента к n-му элементу исходной последовательности.
Вот мой код,
open System
open System.Collections
let squish1 (x:Double seq) =
let r = (Seq.head x:Double)
Seq.fold (fun (xi:Double) (r:Double) -> xi/r);;
И я тестирую этот маленький вектор: -
squish1 [|5.0; 1.0; 1.0; 1.0; 1.0; 1.0|];;
Я все ввел, потому что получаю это сообщение об ошибке
normaliseSequence.fsx (9,1): ошибка FS0030: ограничение значения. > Предполагается, что значение 'it' имеет универсальный тип val it: (Double -> '_a -> Double) when' _a:> seq
Либо сделайте аргументы для 'it' явными, либо, если вы этого не сделаете намереваясь сделать его универсальным,> добавьте аннотацию типа.
Но очевидно, что я неправильно понимаю, потому что я получаю сообщение об ошибке даже при вводе всего текста. Что мне не хватает?
Любые и все советы получены с благодарностью. Спасибо
float
, а неSystem.Double
. - person kvb   schedule 25.10.2011float
- это просто псевдоним дляSystem.Double
. Это одно и то же. kvb просто говорит, что более идиоматично использовать псевдонимfloat
в вашем коде - это ничего не меняет в поведении вашей программы. - person Joel Mueller   schedule 26.10.2011