Is there a connection to dynamically-typed or unityped systems? Consider some tacit language; its programs are all typed transformations. Why can't we compose any two programs in such a language? Well, the types might not line up. But in a unityped environment, the types must always line up because there is only one possible type.
Put another way, if we have two programs `f` and `g`, their composition `fg` is only a valid program under certain conditions. Namely, the types of these programs must be `f : X → Y` and `g : Y → Z`, so that their composition has type `fg : X → Z`. However, if there is only one possible type, then this composition is always valid, because all three programs `f`, `g`, and `fg` would have type `X → X`. Corbin (talk) 16:02, 30 November 2021 (UTC)
I am not familiar with tacit programming, not a professional myself. But isn't it possible to have different transformations based on type?
f('s') → 'ss' vs f(4) → 8`.