Fuzion Logo
fuzion-lang.dev — The Fuzion Language Portal
JavaScript seems to be disabled. Functionality is limited.

Fuzion Features

In Fuzion, the main element to structure a program is a feature. A feature combines data and executable code into one single and powerful concept.

A feature takes the role of a class, method, function, routine, field, interface, trait, package, module, procedure, variable, (formal) argument, member, etc. in other languages. We need to find a good term for this in fuzion. I will use feature for now, which is used in Eiffel. Alternative names might be atom, unit, part, item, detail, class, element, component, bit, piece, thing, entity, grain, cell, body, frame, form, section, sphere, entity, ensemble, act, actor, art, craft, skill, member, deed, feat, etc.

Features containing data

Regarding the data, a fuzion feature can be regarded as a concept similar to a struct in C/C++, or like a class in Java, but without the additional overhead that typically is required for a class.

As an example, look at the following Fuzion code

  point(x, y int) is

Features are types. Variables can be declared and initialized with a given feature type, e.g.,

  p := point 3 4

This is similar to the declaration of a C struct

  struct point {
    int x, y;

and the creation of a C variable of this type

  struct point p = { 3, 4 };

If we look at features as a container of data of different types, features provide product types.

Features containing code

A feature that contains code might look like this

  i32 add(i32 a, b)
    result = a + b;

which corresponds to a C function

  int add(int a, b)
    return a + b;

Features combining code and data