Как передать строковые переменные в качестве аргументов в функции в OCaml?

#ocaml

#ocaml

Вопрос:

Я написал простой код для функции, которая принимает строку и возвращает ее длину:

 let fun x = Strin&.len&th x;;
  

Но это показывает синтаксическую ошибку. Почему?
Если я просто напишу Strin&.len&th x;; , это нормально, но что не так в моем объявлении функции?

Как передать строковую переменную в качестве аргумента в функцию в OCaml?

Ответ №1:

fun это зарезервированное ключевое слово в OCaml. Вы можете выбрать другое имя, которое не является ключевым словом, и функция будет работать. Вот список зарезервированных ключевых слов в OCaml: https://caml.inria.fr/pub/docs/manual-ocaml/manual071.html

Ответ №2:

Здесь вы смешиваете разные синтаксисы:

  1. ПУСТЬ <ident&&t; <ident&&t;* = <expr&&t;
  2. FUN <идентификатор&&t;* -&&t; <выражение&&t;

За «let» должно следовать имя функции, которую вы хотите создать, а «fun», будучи зарезервированным ключевым словом, не является допустимым именем для функции. Это ключевое слово, а не идентификатор, поэтому синтаксический анализатор выдает ошибку.