The "+" operator in Lil is exclusively for addition. It will coerce strings into numbers in a best-effort fashion, which is why you're getting zero:
"5"+3 # 8 " 2.3" + "1Hello" # 3.3 0+"Hello" # 0
The "fuse" operator is binary; it expects a left string argument to intercalate between elements of a right list argument:
":" fuse "A","B","C" # "A:B:C" "" fuse "A","B","C" # "ABC"
Assigning a list to a field's ".text" attribute will implicitly concatenate the elements of a list together, as a convenience. The following are equivalent:
hellotext.text:"" fuse "Hi","There" hellotext.text: "Hi","There"
Cards are normally in scope by name, so you don't typically need a fully-qualified path to reach a widget on another card. The following will be equivalent from a card/widget level script:
deck.cards.A.widgets.name.text
A.widgets.name.text
Does that help?
If you aren't already, I strongly recommend using The Listener to try expressions out piece-by-piece as you develop.