It's also not really a central concept. plan9 doesn't have a $PATH env var, for example - you just union mount all your binaries into `/bin`.
Again, yes there's an implementation on 9p for linux - but it's not baked in and it's not used by the system as a unifying abstraction - this makes it fairly useless:
> Unlike most other operating systems, Plan 9 does not provide special application programming interfaces (such as Berkeley sockets, X resources or ioctl system calls) to access devices.
> Instead, Plan 9 device drivers implement their control interface as a file system, so that the hardware can be accessed by the ordinary file input/output operations read and write.
> Consequently, sharing the device across the network can be accomplished by mounting the corresponding directory tree to the target machine.
It's really having this stuff baked in and then combining them that gives you the power & elegance: https://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs#Combinin...
C replaced by Go, as Inferno replaced it with Limbo for userpace applications.
As for your SML hint, I leave here "Unix system programming in OCaml" :)
Union mounts and 9P are already available in Linux.[1][2] What other things would you like to see?
[1] - https://lwn.net/Articles/325369/
[2] - https://www.mjmwired.net/kernel/Documentation/filesystems/9p...