Shen is a low level language
Continuing my practice of slightly shocking and slightly more inaccurate titles…
It’s my opinion that in certain ways Shen is a low-level language, meaning… developers in Shen can add what are, in many cases, language-level features in other languages.
A recent post on the mailing list mentioned the elision of generics in Java/Scala. The solution to that is for data objects to carry around their type info at runtime. You can certainly implement that in Shen. My understanding is that is what Scala added to the language–they did it for you in the language. In Shen, it’s not in the language, but here’s the key: *any developer* can add it. With macros, you can make it fairly transparent that it’s even going on.
I was thinking about Haskell type classes. I have heard that type classes are implemented by the data object “carrying around” a dictionary of it’s type class functions. Does Shen have type classes? Not built into the language, but you can implement them. With macros, you could probably make it so it “just works” in a nice pretty syntax.
The type system in Shen is so verbose as to make Shen almost uninteresting. But again, with the power of macros and the flexibility of its type system, you can implement virtually any other type system in Shen.
One could argue that “I don’t want to be a language designer” since at this stage, Shen kind of leads developers that way. But… as the ecosystem expands, common practices will emerge and libraries are built, we’ll find lots of interesting things occurring, I think.