Как вставить список в другой список, не объединяя их

Тот, который я знаю как лучший, это FPDF . Это отличное решение с открытым исходным кодом для создания всех видов макетов PDF. Спасибо

См. Учебники FPDF И скрипты

0
задан Simon Shine 16 January 2019 в 05:49
поделиться

1 ответ

Поскольку [[1,5,10] не является допустимым списком, я предполагаю, что вы имеете в виду [[1,5,10]], то есть список int list . Вы можете создать такой список просто, как только что сделали: [[1,5,10]]. Выполнение этого для произвольного списка int может быть выполнено следующим образом:

fun singleton (xs : int list) = [xs]

val test_1 = singleton [1,5,10]  (* = [[1,5,10]] *)

Конкатенация не произошла, поскольку это синонимично:

- [1,5,10] :: [];
> val it = [[1, 5, 10]] : int list list

То есть список [1,5,10] перед пустым списком.

Это демонстрирует оператор :: (cons). Если вы когда-либо хотите поместить несколько элементов (например, несколько int list s) друг перед другом, это то, что вы называете конкатенацией, и вы используете оператор @ (добавление), например, например:

- [1,5,10] @ [11,15,20]
> val it = [1, 5, 10, 11, 15, 20] : int list

Наконец, есть оператор List.concat, который берет список списков и добавляет их все:

- List.concat [ [1,2,3], [4,5,6], [7,8,9] ];
> val it = [1, 2, 3, 4, 5, 6, 7, 8, 9] : int list

Хорошее упражнение на этом этапе чтобы определить эту рекурсивную функцию:

fun my_concat [] = ...
  | my_concat (xs :: xss) = ...

где xs - первый список в списке списков, а xss - оставшийся список списков.

(Я попытался выделить это, дав xs имя во множественном числе и xss имя во множественном числе.)

0
ответ дан Simon Shine 16 January 2019 в 05:49
поделиться