full evaluation - pannous/angle GitHub Wiki

full instant evaluation

Uncharged data, blocks or quoted code can be forced to be fully evaluated with the interpret keyword or with the !! sigil. This is usually not necessary: in most pure functions it is ok to treat symbols as lazily un-evaluated until the very last moment.

One example where immediate fully evaluation can be desirable would be friends{peter james created:now!!} The created property of the friends object will be the current time at construction, even if the object remains uncharged data.

this is different to the following situation

friends{peter james updated:now}
#do some other stuff which takes a while
print friends!!
#do some other stuff which takes a while
print friends!!

here the print statement would each show different updated times

todo what about partial evaluation

friends{peter james created:now!}
print friends!