Я искал и нашел несколько человек, задающих этот вопрос, но не могу найти четкого ответа. Как я могу напечатать нестроковую строку в sml?
Например, если у меня есть экземпляр ADT, то есть типа, объявленного datatype
, и я хотел бы распечатать значение для отладки. Отвечаю ли я за написание функции, которая преобразует такой объект в строку, а затем распечатывает строку? Или есть какая-нибудь библиотека для принтеров, которую я должен использовать? Или есть какая-то функция printObject или toString?
Также как я могу напечатать другие нестроковые объекты, такие как true
и false
?
Казалось бы, sml знает, как печатать такие объекты, потому что, когда я компилирую файл с помощью C-l в emacs, я вижу следующий вывод, показывающий, что sml действительно умеет печатать значения.
[opening /Users/jimka/Repos/mciml/ex1.1.sml]
type key = string
datatype tree = LEAF | TREE of tree * string * tree
val empty = LEAF : tree
val insert = fn : key * tree -> tree
val member = fn : key * tree -> bool
val t1 = TREE (LEAF,"a",LEAF) : tree
val t2 = TREE (LEAF,"a",TREE (LEAF,"c",LEAF)) : tree
val t3 = TREE (LEAF,"a",TREE (TREE (LEAF,"b",LEAF),"c",LEAF)) : tree
val it = true : bool
val it = () : unit