微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

(sml) 我将制作一个函数,用 Lisp 表示法漂亮地打印字符串树

如何解决(sml) 我将制作一个函数,用 Lisp 表示法漂亮地打印字符串树

事实上,我并不确切知道“lisp 符号”是什么意思。 所以我试图让它尽可能类似于列表格式,但我不能像一个例子一样表达它,因为 () 或 (,) 看起来是一样的。 我如何表示像示例一样的列表?


  • 我的 sml 代码

    数据类型 'a Tree = null | Tree of 'a Tree 列表 | 'a 的叶子;

    有趣的prettyprint(null) = [] |漂亮打印(叶(v))= [v] |漂亮打印(树(h::t)) = 漂亮打印(h) @漂亮打印(树(t)) | Prettyprint(Tree([])) = []

    val ex = Tree [leaf( 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))。

您可以在网络中找到许多前缀(或预排序)算法,并根据您的程序语言实现它。

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。