There are four possible status for a casting function:
When a function call is found in the source code, Pliant compiler can use several implicit or extension casting functions to convert the various arguments.If several functions can be applied using different casting functions, then one of these must require less casting functions to be applied on each argument, elsewhere the code is considered to be ambiguous and an error is reported. (more details)
In an affectation (a := b), reduction casting functions can also be involved.
This means that in numerical computations, during the intermediate operations, we always cast to the largest of the involved types, and finally cast to the required type at the end (the affectation).
There is no specific notation for implicit casting ... since it's implicit:
var Int i := 3
var Float f := i
var Float f := 3
var Int i := cast f Int
cast value type
The following casting function comes from char.pli an specify how to cast a Char (character) to a Str (string)
function 'cast Str' c -> s
arg Char c ; arg Str s
s := " "
s 0 := c