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

(sml)I';我将制作一个函数,用Lisp表示法漂亮地打印字符串树,sml,Sml,事实上,我不知道“lisp符号”到底是什么意思。 所以我试着让它尽可能类似于列表格式,但我不能像一个例子那样表达它,因为()或(,)看起来是一样的。 我如何表示一个类似于示例的列表 我的sml代码: 数据类型“a Tree=null |树列表的树| a的叶 有趣的prettyprint(null)=[]| prettyprint(leaf(v))=[v]| prettyprint(Tree(h::t))=prettyprint(h)@prettyprint(Tree(t))| prettyp

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


  • 我的sml代码:

    数据类型“a Tree=null |树列表的树| a的叶

    有趣的prettyprint(null)=[]| prettyprint(leaf(v))=[v]| prettyprint(Tree(h::t))=prettyprint(h)@prettyprint(Tree(t))| prettyprint(Tree([])=[]

    val ex=树[叶(2,3,(1,3),4,((3)),7)]


  • 举例说明:

    val it=“(23(13)4((3))7)”:字符串



这可能不是您的确切解决方案。但是Lisp是一个有着悠久历史和独特的、全括号前缀表示法的编程语言家族

在Lisp中表示源代码时,表达式的第一个元素通常是运算符或函数名,其余元素都被视为参数。这被称为“前缀符号”或“波兰符号”。例如,在C中编写的
4==(2+2)
布尔表达式在Lisp的前缀符号中表示为
(=4(+2)

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


谢谢您的回答。我现在正在学习sml语言,所以我不擅长它。但是我想知道lisp语言和ML语言是否相同。另外,我现在读的这本书感觉像是用文字而不是代码来解释sml的概念,所以我理解这个概念,但很难用代码来实现它。是否有任何网站或书籍可以让我学习这些示例代码?Lisp和ML不一样。我认为它们都遵循一种风格(即函数式编程,而不是命令式编程)。然而,你可以在网上找到许多例子。我建议从hello world开始,然后在可能的情况下,尝试实现上述算法。看吧,你试过了吗?它非常有用。嗯,我经常使用谷歌,但我还没有看到任何能帮助我得到想要的结果的东西。我不想让前缀加起来,我想向您展示我访问的元素。