Я просто прыгаю в F # самостоятельно, делая перевод простого финансового инструмента в качестве упражнения. И я все еще жду ссылки на справочники. Вот что я представляю себе, что F # может делать более чем один умный умный способ, но я не могу пройти синтаксические ошибки.F # применение функции к двум спискам сразу
У меня есть функция под названием Delta для оценки вариантов, и я хочу, чтобы применить его - более двух (параллельных) списков входных значений:
let Delta f k v t r = exp(-r * t) * CDF(D1 f k v t)
let priceList = [100.0; 98.0; 102.0; 100.0] //f
let strike = 100.0 //k
let vol = 0.30 //v
let timeList = [1.0; 0.9; 0.8; 0.7] //t
let rt = 0.005 //r
Так эта функция является частью рекурсивного процесса (с использованием Метод Ньютона). Я был бы счастлив создать список дельт одной длины [d1; d2; d3; d4] [отредактировано: Я придерживаюсь списка дельт в качестве желаемого результата]. Я ищу умный способ F # - одним махом - со списком функций. Я пытался впихнуть эту функцию Delta в этой базовой схеме: (. Похоже, что многие из функций, список мог бы получить мне список Delta или сумму списка Delta)
let sumList = List.map2 (fun x y -> x + y) list1 list2
Я не сближаясь угадать юридический синтаксис. Я также попробовал шаблон «Match head :: tail».
EDIT: Я размышлял здесь о том, чего я прошу, потому что я немного купаюсь во всем Списке. функции, которые новы для меня. Позвольте мне сосредоточиться: могу ли я применить (Delta f k v t r) как (Delta priceList strike vol timeList rt) и произвести deltaList, причем цены, времена и дельта все одинаковой длины?
Я не уверен, что я получил это право, вы хотите, чтобы запустить применение функции почленно в обоих списках? .. Если это так (и списки имеют одинаковую длину), вы можете закрепить их вместе и сопоставить результат по результирующему zip-списку. –
, если они не совпадают с длиной, вы можете просто использовать 'Seq.zip' - это остановится, как только попробует один список (но он даст вам« seq' назад) – Carsten
@Carsten. версия 'Seq.zip', которая заполняет более короткую входную последовательность с заданным значением по умолчанию. – Richard