BRAINDUMP 2022-05-13 A 3am braindump of thoughts on portability. Graphics are not portable. Graphics are tied to hardware. GUIs are tied to hardware. Hardware changes. Interfaces to hardware changes. Programs can only live long if they are not tied to hardware. Programs must act as servers to graphical clients. Graphical clients are hardware dependent. Graphical clients are terminals to a service. Email is a good example. Server programs have existed for a long time. Many emails clients across many platforms: web, mobile, desktop. Server-client architecture is a key to longevity. If C exists, code Standard ML impl in C. If C not exists, code Standard ML impl in asm. Or just code in C all together? Pattern matching in C? First class functions? Are they necessary? But what about strong types? You were ready to give up strong types with Lisp. There are as many C impls as Lisp impls. Which would you prefer? C89 is turing complete. Can offer anything you want. Standard ML is safer, but do hobbyists care about safety (memory leaks, use after free, etc)? Yes and no. They care it works reliably. They also care they can re-implement it in a reasonable amount of time. Can Standard ML be made so it can write device drivers? Sure, why not...? Side-effects via ref are fine. Yeah yeah, mention Rust. Rust is too complicated to implement by one person. Standard ML can be seen as "minimal Rust" if you want. I know, hot-take. Problem for the human at the end of the day: C is everywhere but problematic but also not in some ways.