Give '{' yada '}' definable language semantics in the sense of #lang yada. Similar to SML-NJ Quote/Antiquote but leveraging Rackets more robust built-in language support.
So a source file could be. ========== #lang racket #lang {{ formula }} (define x 3) (define y 2) (define z {{ log (x + y) }}) #lang {{ datalog }} ;; switch datalog language (define result {{ ancestor(A, B) :- parent(A, B). ancestor(A, B) :- parent(A, C), D = C, ancestor(D, B). parent(john, douglas). parent(bob, john). ancestor(A, B)? }} ) #lang {{ formula }} ;; back to math formula (define ans (some-procedure result {{ z^2 + 42 }})) ======= just works. On Thu, May 10, 2012 at 4:44 PM, John Clements <cleme...@brinckerhoff.org>wrote: > > On May 10, 2012, at 1:00 PM, Matthias Felleisen wrote: > > > > > I will assert something about readability: > > > > Racket programs look heavy when compared with Haskell programs. > > > > This is probably true for Python instead of Haskell, too. It is also > true for ML. I conjecture that part of that heaviness comes from wide > lines, long names, deep nesting. Who knows. I don't even know how to > measure this kind of property. > > > > At this point, I can express certain ideas more easily in Racket than in > Haskell, Python, ML or whatever, which is why I am fine. But if this > advantage ever disappeared, heaviness would definitely be a factor to weigh. > > +1 > > John > > > ____________________ > Racket Users list: > http://lists.racket-lang.org/users > >
____________________ Racket Users list: http://lists.racket-lang.org/users