> Also, for a dynamically typed language, I thought it had too many different types. It was too easy to get mixed up between bytestrings and strings, for example. It was also not obvious when you should use or expect nil vs #f. That said, the features for creating your own types (mostly structs) were very good--I found they were very lightweight but still flexible enough to be useful.
You can also used a typed dialect of Racket if that's easier - just write #lang typed/racket at the top of your file: http://docs.racket-lang.org/ts-guide/
Actually, I think it would. The problem is not too many types per se, but too many types without a good way of managing them. All a static type system is is a good way to manage types!
You can also used a typed dialect of Racket if that's easier - just write #lang typed/racket at the top of your file: http://docs.racket-lang.org/ts-guide/