gpt4 book ai didi

sml - 为什么我在这段代码的输出中有意外的 '#'?

转载 作者:行者123 更新时间:2023-12-04 19:39:52 24 4
gpt4 key购买 nike

我正在尝试创建一个派生函数来区分使用如下数据类型:

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))

为什么输出中有'#'?

如有任何帮助,我们将不胜感激!

最佳答案

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

关于sml - 为什么我在这段代码的输出中有意外的 '#'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15998529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com