Perl 6

Диаграмма типов Perl 6

Thomas Sandlas прислал на рассылку perl6-language@perl.org диаграмму типов Perl 6, нарисованную ASCII-графикой:

                                 ::Any
................                    |     ...........................
        _______:___________________/|\____:_________                :
       |       :                    |     :  |      |   static type :
    Package    :                    |     : Void  ?Bool   = context :
       |       :                    | ____:__|______|               :
     Module    :                    |/    :.........................:
    ___|___    :                    |
   |       |   :                    |
 Class Grammar :                    |
   |_______|   :                    |
       |       :                    |
      Role     :                 Object     Record =::= Frame =::= Dictionary
               :                    |
               :         __________/ \_____________________________________
   with        :        |                  |        |     |        |       |
   invocant(s) :      &Code              $Item    %Hash Frame    @Array Tuple
               :        |                  |        |_____|________|_______|
   block owner : topic  |                  |                               |
            $/ : $_     |                  |                               |
           ____:_______/ \_____         ___|________________________       |
          |    :  |    \       |       |        |      |     |      |      |
       .Method : Sub    \  ->Block   \Ref     Value  Undef  Inf  Junction  |
         /|    :  |\     \             |        |                          |
        / |    :  | \     \  __________|        |_____________________     |
     Rule |    :  | Macro  \/          |        |       |       |     |    |
          |____:_/|        Ref[Code]   |      :Pair  /Match/  ~Str  +Num   |
          |    :  |                    |        |               |     |    |
        Multi  :  |                    |        |               |    Int   |
...............:  |                    |        |               |   / |    |
                  |                    |___  ___|               Enum  |    |
                  |                    |   \/                     |   |    |
                  |                    |  Entry[::T.does(Hash)]  Bit  |    |
             _____|__                  |___  _________________________|    |
            |        |                 |   \/                              |
        =Iterator  *List               |  Pos[::T.does(Str|Array)]         |
                     |                 |                                   |
     ________________|_________   _____|___________________________________|
    |      |     |        |    \ /                                         |
...Range  Pipe  Lazy  **Eager  Ref[Array|Hash]                             |
    |______|_____|________|________   _____________________________________|
                                   \ /
                                (to | all leafes)
                                   \|/
                                 ::All

См. также «периодическую» таблицу операторов.4 августа 2005