Instead of "static type advocate", maybe we should call them "metaprogramming deniers". Then there are the metaprogramming deniers who don't even advocate static types. Morons.
-
Show this thread
-
I’ve been thinking about this. Except for code instrumentation and trivial boilerplate generation I’ve never missed macros. Can you come up with a problem that macros solve that isn’t solved by (maybe free monadic, but also plain old) ADT DSLs + interpreters?
2 replies 0 retweets 0 likes -
Replying to @pkamenarsky @msimoni
Interpreters? Macros are compilers. Incrementally defined. Extensible. With no syntactic overhead. But yeah, if you can use interpreters, one will suffice to solve all issues: a Lisp interpreter. (If you can't, or simply don't, your effective language isn't Turing-complete.)
1 reply 0 retweets 0 likes -
Yeah, I know what macros are :) I was asking for a concrete example when a ADT DSL wouldn’t suffice, because frankly I can’t come up with one (except for the aforementioned two cases).
3 replies 0 retweets 0 likes -
Replying to @pkamenarsky @msimoni
For a cool use of macros, see my ILC 2012 paper where I automatically transform data structure libraries between pure and stateful styles and object oriented and type class styles.
2 replies 0 retweets 1 like -
That’s what I’m looking for, thanks!
1 reply 0 retweets 0 likes -
Replying to @pkamenarsky @msimoni
You'll tell me "it's type-directed code transformation!" — Yes, precisely. But also type transformation. Which requires types as first-class values as manipulated by macros.
1 reply 0 retweets 0 likes -
I haven’t read the paper so can’t comment yet, but “types as first class values” sound like type-level functions/type families/dependent types to me?
2 replies 0 retweets 0 likes -
If I understand correctly, the gist of the paper is the following generic transformation: (a -> a) -> (a -> IORef a -> IO ()) and its reverse, correct? Related to that, what is the difference between typeclasses and your interface passing convention?
2 replies 0 retweets 0 likes
Yes, that's the gist of the pure to impure transformation indeed, though it handles more complex products, too. Then there's the typeclass to object transformation. And there are the tricks involved in the reverse transformations.
Loading seems to be taking a while.
Twitter may be over capacity or experiencing a momentary hiccup. Try again or visit Twitter Status for more information.
Read my blog!