Можно ли получить строковое представление общей переменной в sml

Я написал универсальную функцию, и теперь мне нужно строковое представление универсальных переменных. Есть ли простой способ их получить?

Например:

fun arg:(string*'a) = (#1 arg) ^ toString((#2 arg)

Это то, что я хочу сделать в основном.

Поэтому, если этот метод вызывается с ("hello", true"), я хочу получить "hellotrue". И если есть более сложная структура, я хочу распечатать ее, если это возможно.


sml
person Tomas Jansson    schedule 20.01.2013    source источник


Ответы (1)


Короткий ответ: нет.

В отличие от Haskell, в SML нет классов типов, и невозможно вывести, например, show из новых типов.

«Единственный» способ — создать специальную функцию show или toString для каждого типа, который вы создаете. Я говорю «только», поскольку у MLton есть довольно хорошая статья о индексированных значениях типов.

person Jesper.Reenberg    schedule 20.01.2013
comment
Это было именно то, что у меня получилось, функция для каждого типа. - person Tomas Jansson; 21.01.2013
comment
Этот вопрос касается отчасти той же проблемы, хотя вместо этого он касается сравнения . Вывод тот же, просто используйте простые функции toString, когда вы создаете функцию toString для более сложного типа. - person Jesper.Reenberg; 21.01.2013