#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:
Здесь вы смешиваете разные синтаксисы:
- ПУСТЬ <ident&&t; <ident&&t;* = <expr&&t;
- FUN <идентификатор&&t;* -&&t; <выражение&&t;
За «let» должно следовать имя функции, которую вы хотите создать, а «fun», будучи зарезервированным ключевым словом, не является допустимым именем для функции. Это ключевое слово, а не идентификатор, поэтому синтаксический анализатор выдает ошибку.