Как реализовать рекурсивную функцию для упрощения полиномиальных терминов с отсортированным списком кортежей? - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь реализовать функцию для добавления одинаковых терминов в отсортированный список кортежей (первое число представляет константу полинома, второе представляет степень).Я ocaml Noob и не знаю, что я делаю неправильно или как сделать это правильно.

Я пытался написать это, но это не работает https://gyazo.com/d37bb66d0e6813537c34225b6d4048d0

let rec simp list = 
    match list with 
    | (a,b)::(c,d)::remainder where b == d -> (a+c,b)::simp(remainder)
    | (a,b)::(c,d)::remainder where b != d -> (a,b)::(c,d)::simp(remainder)
    | _ -> list;;

Это должно объединить все термины с одинаковым вторым значением и просто вернуть один кортеж с их первыми значениямидобавлен в новый список.то есть: [(3,2); (4,2)] -> [(7,2)].

1 Ответ

0 голосов
/ 15 апреля 2019

Я не знаком с ключевым словом where - есть ocaml-where , который его предоставляет, но, похоже, он делает что-то отличное от того, что вы ожидаете.Таким образом, синтаксис просто неправильный, а where неожиданный.

Вы, вероятно, имели в виду when вместо where.

...