Structure

Declaration:

Here is the idiomatic way to declare a structure

struct Counter
  value: Int64
  name: String

This structure has two fields value and name with their types respectively Int64 and String

Implementation

You can attach some methods to the structure, for example here a class-method new that takes a x and is used as a constructor

The increment method is an instance-method that takes nothing, increments the value field by 1 and returns @

impl Counter
  new: x ->
    Counter 
      value: x
      name: "Counter"

  @increment: @->
    @value = @value + 1

You can learn more about the @ parameter here: Self

main: ->
  Counter::new(41)
    .increment!
    .value
    .print!

This prints 42


*Note: We could have written something more compact, but less readable

impl Counter
  new: x -> Counter value: x, name: "Counter"
  @increment: @-> @value = @value + 1

main: -> Counter::new 41 .increment!.value.print!