#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
, и он содержит только один элемент.