Почему у меня есть неожиданный '#' в выходных данных для этого кода?
Я пытаюсь создать функцию deriv для дифференцирования использование типа данных следующим образом:
datatype Symex = RCOEFF of real
| COEFF of string
| VAR of string
| POWER of Symex * int
| NEG of Symex
| PLUS of Symex * Symex
| MINUS of Symex * Symex
| MULT of Symex * Symex
| DIVIDE of Symex * Symex
Вот пример для a*x^3 + 4.0*x^2 +b*x +c
PLUS (MULT (COEFF ("a"),
POWER (VAR ("x"), 3)),
PLUS (MULT (RCOEFF (4.0),
POWER (VAR ("x"), 2)),
PLUS (MULT (COEFF ("b"),
VAR ("x")),
COEFF ("c"))))
Часть моего кода-это
fun deriv (POWER(a, b)) = MULT(RCOEFF(Real.fromInt(b)), POWER(a, b-1))
Но когда я вычисляю
deriv(POWER(VAR "x", 3))
Выход равен
MULT(RCOEFF 3.0 , POWER(VAR # , 3))
Почему в выходных данных есть'#'?
Пожалуйста, любая помощь будет оценена!!
1 ответ:
SML / NJ имеет ограничение на то, как глубоко структуры печатаются на консоль. Если этот предел достигнут, то
Если вы считаете, что лимит слишком низок, вы можете изменить его, обновив значение, хранящееся в#
используется для обозначения того, что структура больше, но не показана.Control.Print.printDepth
, до значения, которое вам больше подходит.Standard ML of New Jersey v110.69 [built: Mon Jun 8 14:15:08 2009] - datatype 'a ls = Nil | Cons of 'a * 'a ls; datatype 'a ls = Cons of 'a * 'a ls | Nil - Cons(1, Cons(2, Cons(3, Cons(4, Nil)))); val it = Cons (1,Cons (2,Cons #)) : int ls - Control.Print.printDepth; val it = ref 5 : int ref - Control.Print.printDepth := 100; val it = () : unit - Cons(1, Cons(2, Cons(3, Cons(4, Nil)))); val it = Cons (1,Cons (2,Cons (3,Cons (4,Nil)))) : int ls