On Saturday, 19 November 2022 at 03:38:26 UTC, jwatson-CO-edu wrote:
Thank you, something similar to what you suggested reduced the atom size from 72 bytes to 40.

Oh, based on another forum post I added constructors in addition to reducing the atom size 44%.

```d
struct Atom{
    F_Type  kind; // What kind of atom this is
    union{
        double  num; // NMBR: Number value
        string  str; // STRN: String value, D-string
        bool    bul; // BOOL: Boolean value
        struct{ // ---- CONS: pair
            Atom* car; // Left  `Atom` Pointer
            Atom* cdr; // Right `Atom` Pointer
        }
        struct{ // ---- EROR: Code + Message
            F_Error err; // Error code
            string  msg; // Detailed desc
        }
    }
    // https://forum.dlang.org/post/[email protected]
this( double n ){ kind = F_Type.NMBR; num = n; } // make number this( string s ){ kind = F_Type.STRN; str = s; } // make string
    this( bool   b ){ kind = F_Type.BOOL; bul = b; } // make bool
this( Atom* a, Atom* d ){ kind = F_Type.CONS; car = a; cdr = d; } // make cons this( F_Error e, string m ){ kind = F_Type.EROR; err = e; msg = m; } // make error
}
```


Reply via email to