Types 有没有办法获得Perl 6程序中所有已知类型的列表?

Types 有没有办法获得Perl 6程序中所有已知类型的列表?,types,raku,Types,Raku,有没有一种方法可以获得Perl 6程序知道的所有已知类型(内置、定义、加载等)的列表?我脑子里没有特定的任务,这与判断我已经知道的类型是否已经定义有点不同。这应该可以做到: 。表示(|核心:,|单位:,|外部:,|我的:) .grep({.key eq.value.^name}) .map(*.key) .独一无二 ; 说明: Perl 6提供了一种允许间接查找在不同范围内声明/可见的符号的方法。它们可以像散列一样被访问和迭代 所有内置符号应位于核心::中 查找在当前词法作用域或其父作用域之

有没有一种方法可以获得Perl 6程序知道的所有已知类型(内置、定义、加载等)的列表?我脑子里没有特定的任务,这与判断我已经知道的类型是否已经定义有点不同。

这应该可以做到:

。表示(|核心:,|单位:,|外部:,|我的:)
.grep({.key eq.value.^name})
.map(*.key)
.独一无二
;
说明: Perl 6提供了一种允许间接查找在不同范围内声明/可见的符号的方法。它们可以像散列一样被访问和迭代

  • 所有内置符号应位于
    核心::
  • 查找在当前词法作用域或其父作用域之一中声明(或导入)的所有词法作用域更为复杂。
    根据文档中对它的描述,我本以为
    词法::
    会包含所有这些,但根据一些实验,情况似乎并非如此,它看起来像
    单元::
    外部::
    我的:
    需要搜索以捕获它们
这些伪包中定义的符号类型包括:

  • 类型(包、模块、类、角色、本机类型、枚举类型、子集类型)
  • 函数(子程序、术语和运算符)
  • 枚举值
  • 变量和常量
为了只获取类型,我将符号的声明名称与其对象类型的名称相等的类型设置为灰色

如果只需要类,可以添加以下步骤:

.grep({.value.HOW.^name eq'Perl6::Metamodel::ClassHOW'})