Список сумм пар - PullRequest
       84

Список сумм пар

0 голосов
/ 25 апреля 2020

Итак, мне задают следующий вопрос, и мне тяжело понять, с чего начать ... Может ли кто-нибудь мне помочь?

Пока мои рекомендации: https://www.cl.cam.ac.uk/~lp15/MLbook/pub-details.html (по существу, глава 3)

Напишите функцию ML, которая принимает список пар целых чисел (то есть, (int * int) list) и возвращает список, содержащий сумму целых чисел в каждой паре. Например, при вызове [(1,2), (3,4)] эта функция должна возвращать [3, 7].

1 Ответ

0 голосов
/ 25 апреля 2020

Вот как можно начать писать рекурсивное определение, на которое намекает Андреас Россберг.

fun f [] = ...
  | f ((x,y)::pairs) = ...

Это одна из основ функции f, которая принимает список пар. Он использует сопоставление с образцом для исчерпания всех возможных входных значений, сначала разбивая списки на пустые и непустые списки, а затем разбивая непустые списки на «голову, представляющую собой пару x и y, и хвост оставшихся пар за пределами первой пары, являющейся pairs.

Есть много способов, которыми вы можете написать это. Другой использует case-of :

fun f pairs =
    case pairs of
         [] => ...
       | (x,y) :: rest => ...

Здесь, потому что pairs - это все пары, и сопоставление с образцом в case-of все еще разделяет непустой список на голову и хвост, я хочу избежать наложения полного списка ввода , pairs, с оставшимися парами за первой парой, rest. Поэтому я дал им отдельные имена.

Похоже, что на данный момент вам больше всего пригодится чтение вашего учебника. о сопоставлении с образцом и спросите репетитора какого-то рода.

...