Compile-Time objects See Also: S06 The compile-time system builds a 'Program' object. "$program" stringifies to compiled code. Environment - contains the declarations in scope: variables, subroutines - maybe contains also 'want'. Methods ."" (overloaded stringification) - stringifies to source code .box - creates a boxed object. Example: int.box -> Int .WHAT - returns the class as a Class (which stringifies to the class name) .perl - returns a Str, which contains the object dumped as Perl6 source code Coercions .str .num .int .bool .array .hash .scalar Class-specific operations - for example: .print - returns the code to execute '.print' .true .not .== (encoded to ASCII, as '_61__61_') .eq -------------- Classes See also: S02:Built-in Data Types Native types ... Undefined types ... Immutable types Seq List ... Mutable types Array Hash ... Other types - See S02 Value types, Implementation types, Hierarchical types, Polymorphic types, Parameter types, Generic types, Return types Special Classes These classes are used internally to optimize the implementation, by moving boxing and type-checks to compile-time. (Type)Scalar - a typed Scalar ArrayScalar HashScalar (Type)Seq - a typed Seq ArraySeq - An Array that doesn't contain Lazy components. This can be represented by a Perl5 Array. HashSeq (Type)Expression - a typed expression AnyExpression BoolExpression IntExpression StrExpression ... ArrayExpression HashExpression Perl5Scalar - '$a' A Scalar called by name Perl5Array - '@a' An Array called by name Perl5Hash - '%h' A Hash called by name (TODO) A Hash that only has Stringified keys. This can be represented by a Perl5 Hash. -------------- Miscellaneus * use ::unicode_sub sub {...} to define methods with non alphanumeric names --------------