是否可以在Perl 6中实现lisp“语言”?

前端之家收集整理的这篇文章主要介绍了是否可以在Perl 6中实现lisp“语言”?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在这里,每个引用符号的Hello $world的解释我的意思是语言.
$world = "WΩrlδ"
"(Hell)*o $world\n"           # <--- plain (Hell)*o,resolve $world,escape \n
'(Hell)*o $world\n'           # <--- plain (Hell)*o,plain $world,escape \n
/(Hell)*o $world\n/           # <--- regexp (Hell)*,interpret \n
<(Hell)*o $world\n>           # <--- make list ["(Hello*o","$world\n"]
{(Hell)*o $world\n}           # <--- Syntax error,this language cant' parse it

Perl 6也足够强大,可以在未来的语言中存在类似的东西

my $emacs_func = (defun perl-backward-to-start-of-continued-exp (lim)
      (if (= (preceding-char) ?\))
          (forward-sexp -1))
      (beginning-of-line)
      (if (<= (point) lim)
          (goto-char (1+ lim)))
      (skip-chars-forward " \t\f"))


$ typeof($emacs_func)
> Emacs Lisp list

所以,问题显然是:它可以在Perl 6的当前规范(甚至实现)中完成吗?

解决方法

Perl 6的语法只是一个用Perl 6编写的语法,而且非常具有可塑性(尽管当前的实现并不能完全提供所有指定的灵活性).

所以你问的原则上是可能的,但可能需要更多关注.特别是圆括号完全有效的Perl 6语法,甚至(defun a b)解析为有效的Perl 6.所以你需要/真的/小心消除歧义规则,这将是一个巨大的蠕虫.

将Lisp语法限制为一些特殊定界的句法结构(如lisp(…)或q:lisp {…})可能更有意义,尽管可能会实现一些混合.

我敢肯定,一旦编译器中有这样的功能,我们就会看到很多有趣的实验,只有那些实验才会显示哪种语言混合既可行又有用.

原文链接:https://www.f2er.com/Perl/172062.html

猜你在找的Perl相关文章