首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有可能在Perl 6中实现lisp“语言”?

是否有可能在Perl 6中实现lisp“语言”?
EN

Stack Overflow用户
提问于 2011-11-08 20:03:26
回答 4查看 923关注 0票数 10

在这里,每一个引用符号我指的是语言的Hello $world解释。

代码语言:javascript
复制
 $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)*, resolve $world, 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是否足够强大,能够在未来的语言中存在

代码语言:javascript
复制
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

所以,问题很明显是:can it be done in present specification (or even implementation) of Perl 6

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-11-08 20:43:24

Perl 6的语法只是用Perl 6编写的语法,而且非常灵活(尽管当前的实现并不能提供所有特定的灵活性)。

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

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

我确信,一旦编译器中有了这样的特性,我们就会看到很多有趣的实验,只有这些实验才能说明什么样的语言混合是可行的,也是有用的。

票数 18
EN

Stack Overflow用户

发布于 2011-11-09 00:54:16

我似乎忽略了一个问题,那就是Perl6,而不是Perl5。留下我的答案,因为这可能是一些人感兴趣的。

据我理解,Scheme和Lisp是相关的。如果您对Scheme没有意见,那么内联::Inline允许一个人在Perl中使用Scheme代码块。

即使您对Scheme不满意,您也可以通过分叉模块来编辑它,以使用您最喜欢的Lisp引擎,而不会有太多麻烦。

这并不完全是您所描述的那样,但是正如moritz所解释的,您所描述的是不可能的,因为无法知道代码的哪些部分应该作为Perl代码来处理,哪些部分应该作为Lisp代码来处理。

在另一个句柄上,通过使用5.14的可插接令牌处理程序(例如,评论用来覆盖qw ),应该可以比较容易地执行以下操作:

代码语言:javascript
复制
my $emacs_func = lisp(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"));

(注意在代码中添加了lisp。)

票数 7
EN

Stack Overflow用户

发布于 2014-11-29 20:17:20

卡尔·马萨克( Carl )最近(2014年底)创建了针对当前Rakudo的ipso,“Perl 6中的一个元级Lisp”

有一些方法可以将它与P6内联结合起来;关于这一点,请浏览一下“俚语”,例如最近有一篇关于宏/俚语的博文,它支持任意语言的递归内联。

也见达米安·康威的快速排序(P6ish) Lisp

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8056404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档