Получение n-го элемента из списка с плавающей запятой

#ocaml #ml

#ocaml #ml

Вопрос:

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

 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-й элемент любого списка, отличного от целочисленного списка.

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

Ответ №1:

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

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

Ответ №2:

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