(sml) 我将创建一个函数,以 Lisp 表示法精美地打印字符串树
(sml) I'm going to make a function that prints a string tree beautifully in Lisp notation
其实我并不知道“lisp notation”到底是什么意思。
所以我试图让它尽可能类似于列表格式,但我不能像示例一样表达它,因为 () 或 (,) 看起来一样。
我怎样才能像示例一样表示列表?
我的sml代码:
数据类型'a Tree = null |树列表的树 | 'a;
的叶子
有趣的漂亮打印(空)= [] |漂亮的印刷品(叶(v))= [v] | prettyprint(树(h::t)) = prettyprint(h) @ prettyprint(树(t)) |漂亮的打印(树([]))= []
val ex = 树 [叶( 2 , 3 ,( 1 , 3 ), 4 ,( ( 3 ) ), 7 )];
要表示的例子:
val it = " ( 2 3 ( 1 3 ) 4 ( ( 3 ) ) 7 ) " : 字符串
这可能不是您的确切解决方案。但是 Lisp 是一个编程语言家族,具有悠久的历史和独特的完全括号前缀表示法。
在 Lisp 中表示源代码时,表达式的第一个元素通常是运算符或函数名称,任何剩余元素都被视为参数。这称为“前缀表示法”或“波兰表示法”。例如,在C中写成4 == (2 + 2)
的布尔表达式,在Lisp的前缀中表示为(= 4 (+ 2 2)
)表示法。
您可以在网上找到许多前缀(或预序)算法并根据您的程序语言实现它。
其实我并不知道“lisp notation”到底是什么意思。 所以我试图让它尽可能类似于列表格式,但我不能像示例一样表达它,因为 () 或 (,) 看起来一样。 我怎样才能像示例一样表示列表?
我的sml代码:
数据类型'a Tree = null |树列表的树 | 'a;
的叶子有趣的漂亮打印(空)= [] |漂亮的印刷品(叶(v))= [v] | prettyprint(树(h::t)) = prettyprint(h) @ prettyprint(树(t)) |漂亮的打印(树([]))= []
val ex = 树 [叶( 2 , 3 ,( 1 , 3 ), 4 ,( ( 3 ) ), 7 )];
要表示的例子:
val it = " ( 2 3 ( 1 3 ) 4 ( ( 3 ) ) 7 ) " : 字符串
这可能不是您的确切解决方案。但是 Lisp 是一个编程语言家族,具有悠久的历史和独特的完全括号前缀表示法。
在 Lisp 中表示源代码时,表达式的第一个元素通常是运算符或函数名称,任何剩余元素都被视为参数。这称为“前缀表示法”或“波兰表示法”。例如,在C中写成4 == (2 + 2)
的布尔表达式,在Lisp的前缀中表示为(= 4 (+ 2 2)
)表示法。
您可以在网上找到许多前缀(或预序)算法并根据您的程序语言实现它。