Так я пытаюсь умножить п-й элемент одного списка с п-го элемента другого списка и добавить их вместеКак умножить два два степени п элементов списка в F #
let listMulti xList yList =
|> [for x in xList do
for y in yList do
yield x*y ] // multiplies all the elements on x with y
|> List.filter(fun x-> List.nth % List.length (xList) =1) //gets the elements 1 , 4, 7 for a list of size 3. This is scalable
|> List.sum //add them all up
Так что идея здесь
>listMulti [1;2;3][4;5;6];;
val it : int = 32
Так 1 * 4 + 2 * 5 + 3 * 6 = 32 , но вместо этого им получить
ошибки FS0010: Неожиданный оператор инфиксного в связывании
Помощь?
Я не могу заставить это работать. Я новичок в F # и не могу найти информацию о List.zip2 в Интернете. Я нашел List.zip и попытался заставить мою работу в карри работать вокруг нее, но, похоже, я ее не понимаю. Можете ли вы более подробно сказать об этом? – SuperCell
Это была ошибка, я писал без компилятора - должен был быть просто zip. Добавлено некоторое объяснение –
Спасибо, последний вопрос. Я получаю «Ожидая тип, поддерживающий оператор« + », но заданный тип функции. Возможно, вам не хватает аргумента функции.« let inner xList yList = List.zip xList yList |> Список .sum (fun (a, b) -> a * b) Почему это? Не List.zip xList yList возвращает список в конвейер? – SuperCell