Currying visual nodes that way is an amazing idea! Did it just come about naturally as you were building out the higher level language aspects? Most visual UIs choke if everything isnt fully wired up.
The same is applied to our data-flow errors. Think of them like about Haskell's `Either` or Rust's `Result` types, but with automatic lifting (automatic applicative functor lifting). So in Enso, you can have a "broken value", like a string read from a file that could be broken because the file did not exist, but you can still concatenate it with other string WITHOUT using any special syntax, and the result may also be broken. In Rust and Haskell you can do the same, but with a special syntax like `(+) <$> str1 <+> str2`.
I hope it clarifies some things under the hood! :)