it is very clunky though. there is no pattern matching support — you need to write non-trivial visitors to do any meaningful work and it takes the fun out of it. imo, Rust gets it right and borrows a lot of Haskell ergonomics
See struct visitors in https://github.com/llvm/llvm-project/blob/main/flang/include...