Получение n-го элемента из списка чисел - PullRequest
0 голосов
/ 15 апреля 2019

Если у меня есть список с плавающей точкой:

let float_list = [1.5,2.5,3.5]

Я хочу извлечь из этого списка число, похожее на:

List.nth float_list 2

Однако возвращается тип float* плавать, а не 3,5.Кажется, что List.nth только возвращает целые числа из целочисленного списка, и я не могу найти функцию в https://caml.inria.fr/pub/docs/manual-ocaml/libref/List.html для возврата n-го элемента любого списка, кроме целочисленного списка.

Будеткто-нибудь сможет помочь с этим?

Ответы [ 2 ]

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

Ваш float_list - это не список с плавающей точкой, это список float * float * float кортежей, и он содержит только один такой кортеж. Таким образом, в дополнение к отсутствию нужного типа, List.nth float_list 2 фактически вызовет исключение во время выполнения, поскольку 2 не является допустимым индексом для этого списка.

Вы хотите [1.5; 2.5; 3.5], который фактически является списком с плавающей точкой. С этим списком List.nth будет работать именно так, как вы хотите.

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

Список литералов в OCaml использует ; для разделения элементов. , используется для разделения элементов в кортежах. Таким образом, тип float_list на самом деле (float * float * float) list, и он содержит только один элемент.

...