Conversation

(incidentally, if you know how to make the ugly parts of that (e.g. (*foo).clone()) less ugly, i'd be curious) (haven't looked at yours in detail yet because bbiab:)
1
I just use Rcs for all the nodes. Might switch to an arena at some stage though. Feel free to check out Pikelet if you like - it does get a little icky at times, alas.
1
Also the direct approach of matching and using ? looks cleaner in Rust and formats better than using monadic combinators. Sometimes they do help, but I just tend to use them more sparingly these days.
1
Thanks! The bit w.r.t. using `match` to avoid `**` is nice. W.r.t. some of the others I started writing it that way then thought better of it, or couldn't resist golfing :)
1
1
(W.r.t. variants I think fully-qualified is definitely better for a serious codebase, but for gists like this it's just noise. Either that or I'm too used to Haskell atm.)
1
Ah, I found another way: writing e.g. `Term::clone(&term)` and then it's both clear which thing I'm expecting to clone, and deref coercions can kick in so I don't need to count out the *s.
1
2