Как сопоставить функцию с несколькими аргументами в список чисел - PullRequest
0 голосов
/ 06 февраля 2020

Итак, я пытаюсь отобразить функцию, которая имеет 3 аргумента, 2 являются аргументом «дать» и список чисел, который будет последней переменной. Я использую свою функцию карты, но я не буду работать, и я не уверен, почему. Я работаю, если переданная функция имеет 2 аргумента. Я пытался найти другие решения и не нашел много, я не уверен, но я должен попробовать это рекурсивно?

let segment (cx,cy) (nx,ny) =
    let lnf = range (cx+1) nx in
    let s = slope (cx,cy) (nx,ny) in
    let y = yintercept (cx,cy) in
    map (solve s y) lnf;;

let slope (x1,y1) (x2,y2) : int =
  (y2-y1)/(x2-x1)

let yintercept ((x1,y1):coord) slope: int =
    (y1 - (slope * x1))

let solve (m:int) (b:int) (x:int)=
    (x*m)+b

let rec map: ('a -> 'b)  -> 'a list -> 'b list = fun f l ->
  match l with
  | [] -> []
  | h::t -> f h ::  map f t

1 Ответ

0 голосов
/ 06 февраля 2020

В этой строке:

let y = yintercept (cx,cy) in

Вы звоните yintercept только с одним аргументом. Но функция ожидает два аргумента. Таким образом, возвращаемое значение является функцией одного аргумента. В остальной части кода предполагается, что y - это int (не функция).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...