Я читаю книгу Типы и языки программирования (https://www.cis.upenn.edu/%7Ebcpierce/tapl/).
В главе 4, Реализация арифметических выражений на ML, он представил info
. Я скачал исходный код ocaml arith.tar.gz здесь: https://www.cis.upenn.edu/%7Ebcpierce/tapl/checkers./.
Вот начало support.ml
:
open Format
module Error = struct
exception Exit of int
type info = FI of string * int * int | UNKNOWN
У меня есть несколько вопросов:
Q1
Я установил utop (версия 2.6.0) с последним хоумбрю на MacOS, установил библиотеки с opam install core base
. Вот мой .ocamlinit
:
#use "topfind";;
#thread;;
#require "core.top";;
open Base;;
open Core;;
он дает мне предупреждения:
utop # open Format;;
Line 1, characters 5-11:
Alert deprecated: module Base.Format
[2016-09] this element comes from the stdlib distributed with OCaml.
[Base] doesn't export a [Format] module, although the
[Caml.Format.formatter] type is available (as [Formatter.t])
for interaction with other libraries.
utop # open Base.Format;;
Line 1, characters 5-16:
Alert deprecated: module Base.Format
[2016-09] this element comes from the stdlib distributed with OCaml.
[Base] doesn't export a [Format] module, although the
[Caml.Format.formatter] type is available (as [Formatter.t])
for interaction with other libraries.
Что такое библиотека Format
и Base.Format
? Мне все еще нужно открывать их сейчас?
Q2
module Error = struct
застрял в интерпретаторе utop. Что означает эта строка? Почему он застрял в utop?
Q3
Что означает exception Exit of int
?
Q4
Что такое FI
и UNKNOWN
в type info = FI of string * int * int | UNKNOWN
?