<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">As to (@ data 'COMPANY), &nbsp;I've considered and used exactly that simply by (define @ hash-ref). &nbsp; And it's not bad because it's shorter. &nbsp; It's just not as good as (data 'COMPANY). &nbsp; &nbsp;<div><br></div><div>I do notice that the Clojure folks decided that dictionaries were functions such that&nbsp;</div><div><br></div><div>(def talk { "cow" "moo" "dog" "bark" })</div><div><br></div><div>can be treated in function position.</div><div><br></div><div>(talk "cow")</div><div><br></div><div>I'll be looking at the #%app idea in a bit.</div><div><div><br><div apple-content-edited="true">
<div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>------</div><div>John Griffin, CTO</div><div>IT Talent Team, LLC</div><div><a href="http://www.ittalentteam.com">www.ittalentteam.com</a></div><div>855-488-8326</div><div><br></div><div><br></div></div><br class="Apple-interchange-newline"></div><br class="Apple-interchange-newline"><br class="Apple-interchange-newline">
</div>
<br><div><div>On Aug 5, 2013, at 12:00 PM, <a href="mailto:users-request@racket-lang.org">users-request@racket-lang.org</a> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Send users mailing list submissions to<br><span class="Apple-tab-span" style="white-space:pre">        </span><a href="mailto:users@racket-lang.org">users@racket-lang.org</a><br><br>To subscribe or unsubscribe via the World Wide Web, visit<br><span class="Apple-tab-span" style="white-space:pre">        </span>http://lists.racket-lang.org/users/listinfo<br>or, via email, send a message with subject or body 'help' to<br><span class="Apple-tab-span" style="white-space:pre">        </span>users-request@racket-lang.org<br><br>You can reach the person managing the list at<br><span class="Apple-tab-span" style="white-space:pre">        </span>users-owner@racket-lang.org<br><br>When replying, please edit your Subject line so it is more specific<br>than "Re: Contents of users digest..."<br><br><br>[Racket Users list:<br> http://lists.racket-lang.org/users]<br><br><br>Today's Topics:<br><br> &nbsp;&nbsp;1. Re: (procedure? (hash)) -&gt; true (Tony Garnock-Jones)<br> &nbsp;&nbsp;2. Re: (procedure? (hash)) -&gt; true (Matthias Felleisen)<br> &nbsp;&nbsp;3. issue with Dr Racket in linux platform. (Vikas Sood)<br><br><br>----------------------------------------------------------------------<br><br>Message: 1<br>Date: Mon, 05 Aug 2013 11:39:06 -0400<br>From: Tony Garnock-Jones &lt;tonyg@ccs.neu.edu&gt;<br>To: John Griffin &lt;jg@ittalentteam.com&gt;, racket-users<br><span class="Apple-tab-span" style="white-space:pre">        </span>&lt;users@racket-lang.org&gt;<br>Subject: Re: [racket] (procedure? (hash)) -&gt; true<br>Message-ID: &lt;51FFC71A.8080205@ccs.neu.edu&gt;<br>Content-Type: text/plain; charset=ISO-8859-1; format=flowed<br><br>On 08/05/2013 11:30 AM, John Griffin wrote:<br><blockquote type="cite">Thanks in advance for any advice leading to more succinct hash access.<br></blockquote><br>Had you considered something along the lines of<br><br>(define (handier-style data)<br> &nbsp;&nbsp;(when (@ data 'COMPANY)<br> &nbsp;&nbsp;&nbsp;&nbsp;(db-exec ... (@ data 'COMPANY))))<br><br>?<br><br>You might start from<br><br>(define (@ base . path)<br> &nbsp;&nbsp;(match path<br> &nbsp;&nbsp;&nbsp;&nbsp;['() base]<br> &nbsp;&nbsp;&nbsp;&nbsp;[(cons (? number? n) rest)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(apply @ (list-ref base n) rest)]<br> &nbsp;&nbsp;&nbsp;&nbsp;[(cons (? symbol? k) rest)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(apply @ (hash-ref base k) rest)]<br> &nbsp;&nbsp;&nbsp;&nbsp;[... maybe other things ...]))<br><br>to give yourself a not-quite-XPath-like means of projecting JSON values.<br><br>Interesting design decisions include: what to do when a list index is <br>out of range, or a hash key is not present? (Error? Terminate early <br>returning some kind of "undefined" value?)<br><br>Cheers,<br> &nbsp;&nbsp;Tony<br><br><br>------------------------------<br><br>Message: 2<br>Date: Mon, 5 Aug 2013 11:52:49 -0400<br>From: Matthias Felleisen &lt;matthias@ccs.neu.edu&gt;<br>To: John Griffin &lt;jg@ittalentteam.com&gt;<br>Cc: users@racket-lang.org<br>Subject: Re: [racket] (procedure? (hash)) -&gt; true<br>Message-ID: &lt;B4E00C63-E999-46A0-8478-9DC9786980BC@ccs.neu.edu&gt;<br>Content-Type: text/plain; charset="windows-1252"<br><br><br>Consider overriding #%app for your modules. And <br><br>(define (curt-style-receiver data)<br> (cond <br> &nbsp;[(data 'COMPANY) =&gt; (curry db-exec ...)] &nbsp;<br> &nbsp;[else .. what are you doing in the #f case? nothing? ...]))<br><br><br>On Aug 5, 2013, at 11:30 AM, John Griffin wrote:<br><br><blockquote type="cite">I do a lot of work with hash as the result of JSON-RPC calls, with considerable use of hash-ref. &nbsp;&nbsp;In most places, I've replaced the hash with a local result of transforming the hash to a procedure so that I can:<br><br>(stuff 'COMPANY)<br><br>rather than<br><br>(hash-ref stuff 'COMPANY)<br><br>Of course, the setup call to exchange the hash for the procedure takes another line, such that I only bother on longer functions with repeated benefit.<br><br>It certainly would be handy from a succinctness standpoint if a hash acted like a procedure (Any -&gt; Any). &nbsp;Noticing that struct can be a procedure? via a property , I wonder if there's a way for hash? and procedure? to both hold true.<br><br>It's more than simply saving the 9 letters of hash-ref followed by a space. &nbsp;Performance is not an issue and given a curt enough representation, I'd prefer calling it twice rather than making a local define. &nbsp;My current choices are:<br><br>; current STYLE #1<br>(define (current-rpc-receiver data)<br> &nbsp;&nbsp;&nbsp;(define company (hash-ref data 'COMPANY #f))<br> &nbsp;&nbsp;&nbsp;(when company<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(db-exec ? company))<br><br>; current STYLE #2<br>(define (curt-style-rpc-receiver data)<br> &nbsp;&nbsp;(define HF (hash-&gt;procedure data))<br> &nbsp;&nbsp;&nbsp;(when (HF 'COMPANY)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(db-exec ?. (HF 'COMPANY))<br><br>; what would be handier?.<br><br>(define (handy-style data)<br> &nbsp;&nbsp;&nbsp;(when (data 'COMPANY)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(db-exec ? (data 'COMPANY))<br><br>Thanks in advance for any advice leading to more succinct hash access.<br><br>------<br>John Griffin, CTO<br>IT Talent Team, LLC<br>www.ittalentteam.com<br>855-488-8326<br><br><br><br><br><br><br>____________________<br> Racket Users list:<br> http://lists.racket-lang.org/users<br></blockquote><br>-------------- next part --------------<br>An HTML attachment was scrubbed...<br>URL: &lt;http://lists.racket-lang.org/users/archive/attachments/20130805/2c2593f1/attachment-0001.html&gt;<br><br>------------------------------<br><br>Message: 3<br>Date: Mon, 5 Aug 2013 21:27:46 +0530<br>From: Vikas Sood &lt;vikaspragy@gmail.com&gt;<br>To: users@racket-lang.org<br>Subject: [racket] issue with Dr Racket in linux platform.<br>Message-ID:<br><span class="Apple-tab-span" style="white-space:pre">        </span>&lt;CAPsG1M0RY3gUQyaGYGCGMiL8_d-H25JqbM0nhs8-9PjCEhnnbA@mail.gmail.com&gt;<br>Content-Type: text/plain; charset=ISO-8859-1<br><br>Hi<br><br> When i &nbsp;am running any program in DR Racket following message is<br>being displayed.<br><br><br> #%module-begin: illegal use (not a module body) in: (#%module-begin).<br><br>I am not able to run even the first sample code in racket in linux.<br><br>I am not facing any problem while running the same code in windows.<br><br>Kindly provide me with the cause and work around for linux.<br><br>regards<br><br>Vikas<br><br><br>End of users Digest, Vol 96, Issue 10<br>*************************************<br></blockquote></div><br></div></div></body></html>