Если у меня есть список поплавков:
let float_list = [1.5,2.5,3.5]
Я хочу извлечь число из этого списка, похожее на:
List.nth float_list 2
Однако возвращается тип float * float, а не 3.5. List.nth, похоже, возвращает целые числа только из списка целых чисел, и я не могу найти функцию в https://caml.inria.fr/pub/docs/manual-ocaml/libref/List.html для возврата n-го элемента любого списка, кроме списка целых чисел.
Может ли кто-нибудь помочь с этим?
Литералы списка в OCaml используют ;
для разделения элементов. ,
используется для разделения элементов в кортежах. Таким образом, тип float_list
на самом деле (float * float * float) list
, и он содержит только один элемент.
Ваш float_list
— это не список поплавков, это список float * float * float
кортежей, и он содержит только один такой кортеж. Таким образом, помимо отсутствия нужного типа, List.nth float_list 2
на самом деле вызовет исключение во время выполнения, потому что 2
не является допустимым индексом для этого списка.
Вам нужен [1.5; 2.5; 3.5]
, который на самом деле является списком поплавков. С этим списком List.nth
будет работать именно так, как вы хотите.