На верхнем уровне ocaml (версия 3.11.2) это простое выражение выдает мне ошибку:
# let a = [] in if null a then 0 else 1;;
Error: Unbound value null
Я только начал изучать ocaml из oreilly book , в котором, как представляется, часто используется ноль в качестве ключевого слова - например, вверху страницы 32:
# let rec size a_list =
if null a_list then 0
else 1 + (size (List.tl a_list));;
Мне стыдно задавать такой явно гугл-вопрос здесь. Но после долгих поисков я подошел с пустыми руками. Таким образом, я так же открыт для предложений запросов Google, как и для простых ответов. (неудачные попытки Google: [ocaml "Ошибка: несвязанное значение null"] [ocaml null ключевое слово] [ocaml changelog null] [ocaml change null]).
Вопрос: было ли когда-то null ключевое слово ocaml, но не больше? Или я неправильно установил ocaml или что-то написал?
Конечно, я могу заменить каждое вхождение «null» на «[]» в коде, но я удивлен, что дословная копия кода из книги выдает мне ошибку так рано. Эта книга полна других ошибок? Я полагаю, что это было написано с ocaml 2.04; это слишком старый? Я выбрал его, потому что мне понравилось TOC и бесплатная доступность онлайн. Помимо этой нулевой ошибки (которую я все еще более виноват в себе, чем в авторах), объяснения хороши, и я с нетерпением жду обсуждения вопроса о смешении функционального и императивного стиля (расширение ума для меня, как для кого-то другого). знакомы только с c / c ++).