Sml 为什么我会有意外的'#';在该代码的输出中?
我试图创建一个deriv函数来区分 按如下方式使用数据类型:Sml 为什么我会有意外的'#';在该代码的输出中?,sml,smlnj,Sml,Smlnj,我试图创建一个deriv函数来区分 按如下方式使用数据类型: datatype Symex = RCOEFF of real | COEFF of string | VAR of string | POWER of Symex * int | NEG of Symex | PLUS of Symex * Symex
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
下面是一个*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))
为什么输出中有一个“#”
如果您有任何帮助,我们将不胜感激 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
这是一个复制品