什么'#'在SML中意味着什么?

时间:2018-02-22 02:08:27

标签: sml smlnj

我有一个函数,它创建一个基于旧树的新树,以及旧节点中每个节点的最小/最大值。使用数据类型:

datatype 'a Tree = LEAF of 'a | NODE of ('a Tree) * ('a Tree)

datatype 'a myTree = myLEAF of 'a | myNODE of 'a*'a*('a myTree)*('a myTree)

例如,

(NODE(NODE(NODE(LEAF(0),LEAF(9)),LEAF(6)),NODE(LEAF(3),LEAF(10))))

应该产生:

(myNODE(0,10,myNODE(0,9,myNODE(0,9,myLEAF(0),myLEAF(9)),myLEAF(6)),myNODE(3,10,myLEAF(3),myLEAF(10))))

一切似乎都有效。除此之外,叶子和内部节点中的值将替换为'#'。

示例:

 minmaxTree t1;
val it =
  myNODE (1,2,myNODE (1,2,myNODE #,myLEAF #),myNODE (1,2,myNODE #,myNODE #))
  : int myTree

我很困惑为什么sml编译器会替换为'#',其中值明显为int。 非常感谢你!

1 个答案:

答案 0 :(得分:0)

正如molbdnilo所指出的,这是一个重复的问题,我的问题的答案可以在这里找到:here 有一个输出限制,编译器没有设置为深入打印,因为我需要它。在应用解决方案here后,

我的输出是:

- minmaxTree t1;
val it =
  myNODE
    (1,2,myNODE (1,2,myNODE (1,2,myLEAF 1,myLEAF 2),myLEAF 1),
     myNODE
       (1,2,myNODE (1,2,myLEAF 1,myLEAF 2),
        myNODE (1,2,myNODE (1,2,myLEAF 1,myLEAF 2),myLEAF 1))) : int myTree