Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Mutability

In Komodo, everything is inmutable by default. If you declare something with the let keyword, that's inmutable. Every argument you get in a function body is inmutable. Every imported variable is inmutable. Komodo wants you to write more declarative code, but it does not force you. If you want to declare a mutable variable, you can (with some limitations).

The var keyword

Just declare variables with the var keyword instead of the let keyword. That's it.

For example, you can do this:

var sum := 0

for i in 0..10 do sum := sum + i

println(sum)

The limitations

If you declare a mutable variable outside a function, you can't change its value outside of it. For example, the program

var x := 0

let setX(val) :=
    x := val

setX(5)
println(x)

will fail when you call setX. Functions are a barrier for mutable variables. Even if you pass them as arguments to a functions, its value won't change.

It's clear that mutable state is not our favorite, but we wanted to have some options.