That's precisely what (2) was getting at. Good luck and SOS as much as you need -- Matthias
On Dec 29, 2013, at 6:23 PM, Scott Klarenbach wrote: > I think I have a much simpler approach for my purposes. I can have a > (define-expression ...) macro that basically just stores the expression as a > quoted list. This largely emulates c#'s expression trees, but with a lot > less hassle and ugly syntax. I can then achieve the composition I desire > through quasiquoting/unquoting the expressions. ie, > > `(lambda (x) (and (> x 3) ,(some-other-expression x))) > > I can then inspect the expression and translate it accordingly for various > source data (sql, xpath, files, vectors), etc. > > A reread of > http://homepages.inf.ed.ac.uk/slindley/papers/practical-theory-of-linq.pdf > shows that basically all they are doing is quoting and unquoting expressions > and then normalizing them for a particular runtime target. Through this you > can achieve a lot of the composition and parametrization of queries that is > sorely lacking in sql. > > I'll keep you posted, most likely via random SOS pings to this list :). > > Thanks. > > > On Sun, Dec 29, 2013 at 10:16 AM, Matthias Felleisen <matth...@ccs.neu.edu> > wrote: > > On Dec 28, 2013, at 2:01 PM, Scott Klarenbach wrote: > >> I'm playing around with the idea of a sort of "Language Integrated Query" >> like LINQ. For example: >> >> > (sql (query 'my-table >> #:where (λ (row) (> (hash-ref row 'id) 3)))) >> "select * from my-table where id > 3" >> > > I understand your motivation now. See Greg's suggestions. I think they are > right on. > >> In another thread, I'd like to poll this list as to the benefits (if any) of >> such a linq-style approach. I got inspired by this paper: >> http://homepages.inf.ed.ac.uk/slindley/papers/practical-theory-of-linq.pdf >> and really enjoyed the c# linq stuff I've played around with. It may very >> well be; however, that this is not desired or useful, > > > (1) Part of the Racket philosophy is not to exclude some approach because it > is not desired or not considered useful. We welcome experimentations such as > yours and when things fail, we re-consider our language. (No promise that we > change it :-) > (2) I think a DSL approach to DBs based on syntactic abstractions might be > more useful. > > Keep us posted. Better yet, report on your experience at the next RacketCon. > > > >> As an aside: >> >> This might be a MIT misunderstanding about the relationship between Scheme >> and the lambda calculus. It is certainly not possible in general and I see >> no pragmatic use case for an approximation. >> >> It would be really nice to print the source code of a known procedure on the >> repl, in order to get a quick view of what it does. Or, the "pa" function >> which prints out the arguments of a procedure is even more useful. > > > I think a function that displays (1) docs and/or (2) specs (say contracts) > might be a lot more useful than raw source. > > -- Matthias > > > > > > > -- > Talk to you soon, > > Scott Klarenbach > > PointyHat Software Corp. > www.pointyhat.ca > p 604-568-4280 > e sc...@pointyhat.ca > 200-1575 W. Georgia > Vancouver, BC V6G2V3 > > _______________________________________ > To iterate is human; to recur, divine
____________________ Racket Users list: http://lists.racket-lang.org/users