<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=iso-8859-1" http-equiv=Content-Type>
<META name=GENERATOR content="MSHTML 8.00.6001.18928">
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV>well, I hate to spoil the fun (and it IS fun - I once wrote a task 
scheduler built on engines, and I thoroughly enjoyed it), but a) the last thing 
the world needs is yet another operating system, and b) Scheme (and in 
particular Racket) are pretty poor choices for underlying architectures. In low 
level software design, you MUST a) have real time behavior at least in the 
kernel (which doesn't go well with anything that has JIT and garbage collection 
in it) and b) have some kind of control over&nbsp;hardware - placement of code 
and data in memory, access to memory mapped peripheral I/O, interrupt handlers 
and so on. By definition, none of the above blend in well with the (otherwise 
very desireable) abstraction features of Scheme. In fact, the predominant 
language Embedded systems are written in is still C, sometimes C++ - but no 
language that does not support pointers or address casts will ever have a chance 
to be a building block for embedded systems. </DIV>
<DIV>&nbsp;</DIV>
<DIV>I've given this very issue a lot of thought recently (I am a full time 
embedded software designer and planned on doing an embedded system completly in 
Scheme myself), and eventually I decided that without compromising a number of 
the fundamentail tenets of Scheme, there simply isn't a point (you'd have to 
provide a number of extensions that plainly contradict the Scheme philosophy). 
Of course I'll be happy to be proven wrong. I am aware of a few attempts made at 
it, but as far as I can tell, those were useful only in a very limited 
environment, and to my best knowledge, none has ever made it into the commercial 
world.</DIV>
<DIV><BR>And of course, for academic purposes, there is always a place for a 
project like that, but I don't see any money in the real world to be made with 
that kind of thing, given that the first questions it must answer are "will it 
run my iPhone apps" and "does it&nbsp;support the Graphmaster AX-B34x series of 
graphics cards in accelerated mode?"&nbsp;</DIV>
<DIV><FONT size=2 face=Arial></FONT>&nbsp;</DIV>
<BLOCKQUOTE 
style="BORDER-LEFT: #000000 2px solid; PADDING-LEFT: 5px; PADDING-RIGHT: 0px; MARGIN-LEFT: 5px; MARGIN-RIGHT: 0px">
  <DIV style="FONT: 10pt arial">----- Original Message ----- </DIV>
  <DIV 
  style="FONT: 10pt arial; BACKGROUND: #e4e4e4; font-color: black"><B>From:</B> 
  <A title=davidblubaugh2000@yahoo.com 
  href="mailto:davidblubaugh2000@yahoo.com">David Blubaugh</A> </DIV>
  <DIV style="FONT: 10pt arial"><B>To:</B> <A title=matthias@ccs.neu.edu 
  href="mailto:matthias@ccs.neu.edu">Matthias Felleisen</A> </DIV>
  <DIV style="FONT: 10pt arial"><B>Cc:</B> <A title=users@racket-lang.org 
  href="mailto:users@racket-lang.org">users@racket-lang.org</A> </DIV>
  <DIV style="FONT: 10pt arial"><B>Sent:</B> Wednesday, December 05, 2012 5:29 
  PM</DIV>
  <DIV style="FONT: 10pt arial"><B>Subject:</B> Re: [racket] OPERATING SYSTEM ON 
  A FPGA</DIV>
  <DIV><BR></DIV>
  <TABLE border=0 cellSpacing=0 cellPadding=0>
    <TBODY>
    <TR>
      <TD vAlign=top>
        <DIV>Well</DIV>
        <DIV>&nbsp;</DIV>
        <DIV>&nbsp;</DIV>
        <DIV>Is there a way I can obtain help in acquiring funding in developing 
        Racket into a real OS??&nbsp; I would love to see how far we can take 
        this concept !!!&nbsp; </DIV>
        <DIV>&nbsp;</DIV>
        <DIV>Apple and MacOS watch out here comes something with more powerful 
        features !!!</DIV>
        <DIV>&nbsp;</DIV>
        <DIV>David Blubaugh<BR><BR>--- On <B>Wed, 12/5/12, Matthias Felleisen 
        <I>&lt;<A 
        href="mailto:matthias@ccs.neu.edu">matthias@ccs.neu.edu</A>&gt;</I></B> 
        wrote:<BR></DIV>
        <BLOCKQUOTE 
        style="BORDER-LEFT: rgb(16,16,255) 2px solid; PADDING-LEFT: 5px; MARGIN-LEFT: 5px"><BR>From: 
          Matthias Felleisen &lt;<A 
          href="mailto:matthias@ccs.neu.edu">matthias@ccs.neu.edu</A>&gt;<BR>Subject: 
          Re: [racket] OPERATING SYSTEM ON A FPGA<BR>To: "David Blubaugh" 
          &lt;davidblubaugh2000@yahoo.com&gt;<BR>Cc: 
          users@racket-lang.org<BR>Date: Wednesday, December 5, 2012, 11:24 
          AM<BR><BR>
          <DIV class=plainMail><BR>In the mid 90s, we had this idea to go for a 
          Scheme OS, SOS. As an experiment, we asked a student to write a disk 
          driver in Scheme (Bigloo) and to see what we could do with it. One of 
          the things he was able to do is hot-swap policies for spinning the 
          disk. This sounds so quaint in the age of laptops w/o movable parts. 
          <BR><BR>In the late 90s, Matthew spent an afternoon so that we could 
          boot Racket (formerly known as PLT Scheme) on raw hardware. Since most 
          of us had dual-boot machines already (Linux and the other one), we 
          went to ternary-boot machines: Linux, PLT Scheme, and the other one. 
          None of us ever had the appetite to add enough device drivers to turn 
          Racket into a real OS but nothing stands in its way. <BR><BR>Right 
          now, a Darpa project enables us to experiment with Racket on the 
          Router (think RoR, though that acronym has been taken). Again, it's 
          systemish work. This email is going thru the DNS service that we have 
          built so far. <BR><BR>In short, doable but we haven't done it. 
          <BR><BR><BR><BR><BR><BR><BR><BR><BR><BR>On Dec 5, 2012, at 11:16 AM, 
          David Blubaugh wrote:<BR><BR>&gt; To All,<BR>&gt;&nbsp; <BR>&gt;&nbsp; 
          <BR>&gt; I was wondering if anyone has ever created a real time 
          operating system with Racket.&nbsp; As well as, create applications 
          within a FPGA device by utilizing racket??&nbsp; Can racket be a 
          solution to ALL PROBLEMS that is the question.<BR>&gt;&nbsp; 
          <BR>&gt;&nbsp; <BR>&gt; David Blubaugh<BR>&gt;&nbsp; <BR>&gt; <BR>&gt; 
          <BR>&gt; --- On Wed, 12/5/12, <A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=users-request@racket-lang.org" 
          ymailto="mailto:users-request@racket-lang.org">users-request@racket-lang.org</A> 
          &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=users-request@racket-lang.org" 
          ymailto="mailto:users-request@racket-lang.org">users-request@racket-lang.org</A>&gt; 
          wrote:<BR>&gt; <BR>&gt; From: <A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=users-request@racket-lang.org" 
          ymailto="mailto:users-request@racket-lang.org">users-request@racket-lang.org</A> 
          &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=users-request@racket-lang.org" 
          ymailto="mailto:users-request@racket-lang.org">users-request@racket-lang.org</A>&gt;<BR>&gt; 
          Subject: users Digest, Vol 88, Issue 18<BR>&gt; To: <A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=users@racket-lang.org" 
          ymailto="mailto:users@racket-lang.org">users@racket-lang.org</A><BR>&gt; 
          Date: Wednesday, December 5, 2012, 10:30 AM<BR>&gt; <BR>&gt; Send 
          users mailing list submissions to<BR>&gt;&nbsp; &nbsp;&nbsp;&nbsp;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=users@racket-lang.org" 
          ymailto="mailto:users@racket-lang.org">users@racket-lang.org</A><BR>&gt; 
          <BR>&gt; To subscribe or unsubscribe via the World Wide Web, 
          visit<BR>&gt;&nbsp; &nbsp;&nbsp;&nbsp;<A 
          href="http://lists.racket-lang.org/users/listinfo" 
          target=_blank>http://lists.racket-lang.org/users/listinfo</A><BR>&gt; 
          or, via email, send a message with subject or body 'help' 
          to<BR>&gt;&nbsp; &nbsp;&nbsp;&nbsp;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=users-request@racket-lang.org" 
          ymailto="mailto:users-request@racket-lang.org">users-request@racket-lang.org</A><BR>&gt; 
          <BR>&gt; You can reach the person managing the list at<BR>&gt;&nbsp; 
          &nbsp;&nbsp;&nbsp;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=users-owner@racket-lang.org" 
          ymailto="mailto:users-owner@racket-lang.org">users-owner@racket-lang.org</A><BR>&gt; 
          <BR>&gt; When replying, please edit your Subject line so it is more 
          specific<BR>&gt; than "Re: Contents of users digest..."<BR>&gt; 
          <BR>&gt; <BR>&gt; [Racket Users list:<BR>&gt; <A 
          href="http://lists.racket-lang.org/users" 
          target=_blank>http://lists.racket-lang.org/users</A>]<BR>&gt; <BR>&gt; 
          <BR>&gt; Today's Topics:<BR>&gt; <BR>&gt;&nbsp; &nbsp; 1. Re: Whats 
          the difference between a predicate and a flat<BR>&gt;&nbsp; &nbsp; 
          &nbsp;&nbsp;&nbsp;contract? (Harry Spier)<BR>&gt;&nbsp; &nbsp; 2. Re: 
          Whats the difference between a predicate and a flat<BR>&gt;&nbsp; 
          &nbsp; &nbsp;&nbsp;&nbsp;contract? (Robby Findler)<BR>&gt;&nbsp; 
          &nbsp; 3. Re: DRRacket right-click menu fragility in Linux. (Neil 
          Toronto)<BR>&gt;&nbsp; &nbsp; 4. Re: minimum spanning tree (Matthias 
          Felleisen)<BR>&gt; <BR>&gt; <BR>&gt; 
          ----------------------------------------------------------------------<BR>&gt; 
          <BR>&gt; Message: 1<BR>&gt; Date: Tue, 4 Dec 2012 21:59:42 
          -0500<BR>&gt; From: Harry Spier &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=vasishtha.spier@gmail.com" 
          ymailto="mailto:vasishtha.spier@gmail.com">vasishtha.spier@gmail.com</A>&gt;<BR>&gt; 
          To: Robby Findler &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=robby@eecs.northwestern.edu" 
          ymailto="mailto:robby@eecs.northwestern.edu">robby@eecs.northwestern.edu</A>&gt;<BR>&gt; 
          Cc: Carl Eastlund &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=cce@ccs.neu.edu" 
          ymailto="mailto:cce@ccs.neu.edu">cce@ccs.neu.edu</A>&gt;, users &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=users@racket-lang.org" 
          ymailto="mailto:users@racket-lang.org">users@racket-lang.org</A>&gt;<BR>&gt; 
          Subject: Re: [racket] Whats the difference between a predicate and 
          a<BR>&gt;&nbsp; &nbsp;&nbsp;&nbsp;flat&nbsp; &nbsp; contract?<BR>&gt; 
          Message-ID:<BR>&gt;&nbsp; 
          &nbsp;&nbsp;&nbsp;&lt;CAJ3b0o9_yd-j4U6tbEOQaB+JKWto_A1XwSrh3_xyRTk=Uviy=<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=Q@mail.gmail.com" 
          ymailto="mailto:Q@mail.gmail.com">Q@mail.gmail.com</A>&gt;<BR>&gt; 
          Content-Type: text/plain; charset=UTF-8<BR>&gt; <BR>&gt; Are 
          flat-contract and flat-contract-predicate equivalent?<BR>&gt; <BR>&gt; 
          &gt; ((flat-contract 'x) 'x)<BR>&gt; #t<BR>&gt; &gt; 
          ((flat-contract-predicate 'x) 'x)<BR>&gt; #t<BR>&gt; &gt; 
          ((flat-contract 'x) 'y)<BR>&gt; #f<BR>&gt; &gt; 
          ((flat-contract-predicate 'x) 'y)<BR>&gt; #f<BR>&gt; &gt;<BR>&gt; 
          <BR>&gt; Harry<BR>&gt; <BR>&gt; On Tue, Dec 4, 2012 at 9:41 PM, Robby 
          Findler<BR>&gt; &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=robby@eecs.northwestern.edu" 
          ymailto="mailto:robby@eecs.northwestern.edu">robby@eecs.northwestern.edu</A>&gt; 
          wrote:<BR>&gt; &gt; It does that for symbols, but not 
          everything.<BR>&gt; &gt;<BR>&gt; &gt; This is the place you should be 
          looking, I think.<BR>&gt; &gt;<BR>&gt; &gt; <A 
          href="http://docs.racket-lang.org/reference/contracts.html" 
          target=_blank>http://docs.racket-lang.org/reference/contracts.html</A><BR>&gt; 
          &gt;<BR>&gt; &gt; Robby<BR>&gt; &gt;<BR>&gt; &gt; On Tue, Dec 4, 2012 
          at 8:38 PM, Harry Spier &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=vasishtha.spier@gmail.com" 
          ymailto="mailto:vasishtha.spier@gmail.com">vasishtha.spier@gmail.com</A>&gt; 
          wrote:<BR>&gt; &gt;&gt; OK I see the docs to flat-contract? but not 
          flat-contract<BR>&gt; &gt;&gt; <A 
          href="http://docs.racket-lang.org/reference/contract-utilities.html#" 
          target=_blank>http://docs.racket-lang.org/reference/contract-utilities.html#</A>(def._((lib._racket/contract/private/misc..rkt)._flat-contract~3f))<BR>&gt; 
          &gt;&gt; mention that flat-contracts are more than predicates.&nbsp; 
          Those docs<BR>&gt; &gt;&gt; don't mention it, but it appears from 
          experimentation that<BR>&gt; &gt;&gt; (flat-contract something) 
          produces a procedure such that<BR>&gt; &gt;&gt; ((flat-contract 
          something) x) is #t if something eq? x .<BR>&gt; &gt;&gt;<BR>&gt; 
          &gt;&gt; Harry Spier<BR>&gt; &gt;&gt;<BR>&gt; &gt;&gt; On Tue, Dec 4, 
          2012 at 8:57 PM, Robby Findler<BR>&gt; &gt;&gt; &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=robby@eecs.northwestern.edu" 
          ymailto="mailto:robby@eecs.northwestern.edu">robby@eecs.northwestern.edu</A>&gt; 
          wrote:<BR>&gt; &gt;&gt;&gt; On Tue, Dec 4, 2012 at 7:28 PM, Carl 
          Eastlund &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=cce@ccs.neu.edu" 
          ymailto="mailto:cce@ccs.neu.edu">cce@ccs.neu.edu</A>&gt; 
          wrote:<BR>&gt; &gt;&gt;&gt;&gt; On Tue, Dec 4, 2012 at 7:49 PM, Robby 
          Findler &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=robby@eecs.northwestern.edu" 
          ymailto="mailto:robby@eecs.northwestern.edu">robby@eecs.northwestern.edu</A>&gt;<BR>&gt; 
          &gt;&gt;&gt;&gt; wrote:<BR>&gt; &gt;&gt;&gt;&gt;&gt;<BR>&gt; 
          &gt;&gt;&gt;&gt;&gt; Flat contracts includes more things than 
          contracts. For example:<BR>&gt; &gt;&gt;&gt;&gt;&gt;<BR>&gt; 
          &gt;&gt;&gt;&gt;&gt; [robby@yanpu] 
          ~/git/plt/collects/scribblings/reference$ racket<BR>&gt; 
          &gt;&gt;&gt;&gt;&gt; Welcome to Racket v5.3.1.9.<BR>&gt; 
          &gt;&gt;&gt;&gt;&gt; &gt; (flat-contract? 'x)<BR>&gt; 
          &gt;&gt;&gt;&gt;&gt; #t<BR>&gt; &gt;&gt;&gt;&gt;&gt; &gt; (procedure? 
          'x)<BR>&gt; &gt;&gt;&gt;&gt;&gt; #f<BR>&gt; 
          &gt;&gt;&gt;&gt;&gt;<BR>&gt; &gt;&gt;&gt;&gt;&gt; The flat-contract 
          function is a holdover from the days when flat contracts<BR>&gt; 
          &gt;&gt;&gt;&gt;&gt; weren't able to be used directly as predicate 
          functions.<BR>&gt; &gt;&gt;&gt;&gt;&gt;<BR>&gt; 
          &gt;&gt;&gt;&gt;&gt;<BR>&gt; &gt;&gt;&gt;&gt;&gt; I'll push a 
          clarification to the docs for flat-contract.<BR>&gt; 
          &gt;&gt;&gt;&gt;<BR>&gt; &gt;&gt;&gt;&gt;<BR>&gt; &gt;&gt;&gt;&gt; 
          Isn't that the wrong way around?&nbsp; The flat-contract function lets 
          you use a<BR>&gt; &gt;&gt;&gt;&gt; predicate as a contract, not a 
          contract as a predicate.&nbsp; Presumably it's<BR>&gt; 
          &gt;&gt;&gt;&gt; from before predicates could be used as contracts, 
          although I hadn't<BR>&gt; &gt;&gt;&gt;&gt; realized there was such a 
          time.<BR>&gt; &gt;&gt;&gt;<BR>&gt; &gt;&gt;&gt; There was a time when 
          you had to call 'flat-contract' to turn a<BR>&gt; &gt;&gt;&gt; 
          predicate into a contract, yep. There was a housecleaning 
          (anyone<BR>&gt; &gt;&gt;&gt; remember the days when there were 
          multiple suffixes (not just "/c") on<BR>&gt; &gt;&gt;&gt; the 
          combinators?) and I probably should have gotten rid of it at 
          that<BR>&gt; &gt;&gt;&gt; time, but I didn't.<BR>&gt; 
          &gt;&gt;&gt;<BR>&gt; &gt;&gt;&gt; (Oh and I mean "contracts" where I 
          wrote "preducate functions" above. Oops.)<BR>&gt; &gt;&gt;&gt;<BR>&gt; 
          &gt;&gt;&gt; Robby<BR>&gt; <BR>&gt; <BR>&gt; 
          ------------------------------<BR>&gt; <BR>&gt; Message: 2<BR>&gt; 
          Date: Tue, 4 Dec 2012 21:05:45 -0600<BR>&gt; From: Robby Findler 
          &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=robby@eecs.northwestern.edu" 
          ymailto="mailto:robby@eecs.northwestern.edu">robby@eecs.northwestern.edu</A>&gt;<BR>&gt; 
          To: Harry Spier &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=vasishtha.spier@gmail.com" 
          ymailto="mailto:vasishtha.spier@gmail.com">vasishtha.spier@gmail.com</A>&gt;<BR>&gt; 
          Cc: Carl Eastlund &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=cce@ccs.neu.edu" 
          ymailto="mailto:cce@ccs.neu.edu">cce@ccs.neu.edu</A>&gt;, users &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=users@racket-lang.org" 
          ymailto="mailto:users@racket-lang.org">users@racket-lang.org</A>&gt;<BR>&gt; 
          Subject: Re: [racket] Whats the difference between a predicate and 
          a<BR>&gt;&nbsp; &nbsp;&nbsp;&nbsp;flat&nbsp; &nbsp; contract?<BR>&gt; 
          Message-ID:<BR>&gt;&nbsp; &nbsp;&nbsp;&nbsp;&lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=CAL3TdOMVL4xerBMr9xWqNz3tPjxbSXDfjaiJro2N9j6fxrSrOQ@mail.gmail.com" 
          ymailto="mailto:CAL3TdOMVL4xerBMr9xWqNz3tPjxbSXDfjaiJro2N9j6fxrSrOQ@mail.gmail.com">CAL3TdOMVL4xerBMr9xWqNz3tPjxbSXDfjaiJro2N9j6fxrSrOQ@mail.gmail.com</A>&gt;<BR>&gt; 
          Content-Type: text/plain; charset=UTF-8<BR>&gt; <BR>&gt; Yes ..., I 
          think so (well, eq? probably messes things up, as usual).<BR>&gt; 
          <BR>&gt; But that's a funny question! What's really going on there is 
          that<BR>&gt; flat-contract is coercing the value into a contract, and 
          flat<BR>&gt; contracts also acts as predicate functions (matching what 
          the<BR>&gt; contracts match). flat-contract-predicate takes its 
          argument, turns it<BR>&gt; into the contract and then returns the 
          predicate. This last step is<BR>&gt; useless, as flat-contracts are 
          now predicates without any coercion<BR>&gt; (again, not something that 
          was always the case).<BR>&gt; <BR>&gt; I'll add a similar note to the 
          docs for this function too.<BR>&gt; <BR>&gt; Robby<BR>&gt; <BR>&gt; On 
          Tue, Dec 4, 2012 at 8:59 PM, Harry Spier &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=vasishtha.spier@gmail.com" 
          ymailto="mailto:vasishtha.spier@gmail.com">vasishtha.spier@gmail.com</A>&gt; 
          wrote:<BR>&gt; &gt; Are flat-contract and flat-contract-predicate 
          equivalent?<BR>&gt; &gt;<BR>&gt; &gt;&gt; ((flat-contract 'x) 
          'x)<BR>&gt; &gt; #t<BR>&gt; &gt;&gt; ((flat-contract-predicate 'x) 
          'x)<BR>&gt; &gt; #t<BR>&gt; &gt;&gt; ((flat-contract 'x) 'y)<BR>&gt; 
          &gt; #f<BR>&gt; &gt;&gt; ((flat-contract-predicate 'x) 'y)<BR>&gt; 
          &gt; #f<BR>&gt; &gt;&gt;<BR>&gt; &gt;<BR>&gt; &gt; Harry<BR>&gt; 
          &gt;<BR>&gt; &gt; On Tue, Dec 4, 2012 at 9:41 PM, Robby 
          Findler<BR>&gt; &gt; &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=robby@eecs.northwestern.edu" 
          ymailto="mailto:robby@eecs.northwestern.edu">robby@eecs.northwestern.edu</A>&gt; 
          wrote:<BR>&gt; &gt;&gt; It does that for symbols, but not 
          everything.<BR>&gt; &gt;&gt;<BR>&gt; &gt;&gt; This is the place you 
          should be looking, I think.<BR>&gt; &gt;&gt;<BR>&gt; &gt;&gt; <A 
          href="http://docs.racket-lang.org/reference/contracts.html" 
          target=_blank>http://docs.racket-lang.org/reference/contracts.html</A><BR>&gt; 
          &gt;&gt;<BR>&gt; &gt;&gt; Robby<BR>&gt; &gt;&gt;<BR>&gt; &gt;&gt; On 
          Tue, Dec 4, 2012 at 8:38 PM, Harry Spier &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=vasishtha.spier@gmail.com" 
          ymailto="mailto:vasishtha.spier@gmail.com">vasishtha.spier@gmail.com</A>&gt; 
          wrote:<BR>&gt; &gt;&gt;&gt; OK I see the docs to flat-contract? but 
          not flat-contract<BR>&gt; &gt;&gt;&gt; <A 
          href="http://docs.racket-lang.org/reference/contract-utilities.html#" 
          target=_blank>http://docs.racket-lang.org/reference/contract-utilities.html#</A>(def._((lib._racket/contract/private/misc..rkt)._flat-contract~3f))<BR>&gt; 
          &gt;&gt;&gt; mention that flat-contracts are more than 
          predicates.&nbsp; Those docs<BR>&gt; &gt;&gt;&gt; don't mention it, 
          but it appears from experimentation that<BR>&gt; &gt;&gt;&gt; 
          (flat-contract something) produces a procedure such that<BR>&gt; 
          &gt;&gt;&gt; ((flat-contract something) x) is #t if something eq? x 
          .<BR>&gt; &gt;&gt;&gt;<BR>&gt; &gt;&gt;&gt; Harry Spier<BR>&gt; 
          &gt;&gt;&gt;<BR>&gt; &gt;&gt;&gt; On Tue, Dec 4, 2012 at 8:57 PM, 
          Robby Findler<BR>&gt; &gt;&gt;&gt; &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=robby@eecs.northwestern.edu" 
          ymailto="mailto:robby@eecs.northwestern.edu">robby@eecs.northwestern.edu</A>&gt; 
          wrote:<BR>&gt; &gt;&gt;&gt;&gt; On Tue, Dec 4, 2012 at 7:28 PM, Carl 
          Eastlund &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=cce@ccs.neu.edu" 
          ymailto="mailto:cce@ccs.neu.edu">cce@ccs.neu.edu</A>&gt; 
          wrote:<BR>&gt; &gt;&gt;&gt;&gt;&gt; On Tue, Dec 4, 2012 at 7:49 PM, 
          Robby Findler &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=robby@eecs.northwestern.edu" 
          ymailto="mailto:robby@eecs.northwestern.edu">robby@eecs.northwestern.edu</A>&gt;<BR>&gt; 
          &gt;&gt;&gt;&gt;&gt; wrote:<BR>&gt; &gt;&gt;&gt;&gt;&gt;&gt;<BR>&gt; 
          &gt;&gt;&gt;&gt;&gt;&gt; Flat contracts includes more things than 
          contracts. For example:<BR>&gt; &gt;&gt;&gt;&gt;&gt;&gt;<BR>&gt; 
          &gt;&gt;&gt;&gt;&gt;&gt; [robby@yanpu] 
          ~/git/plt/collects/scribblings/reference$ racket<BR>&gt; 
          &gt;&gt;&gt;&gt;&gt;&gt; Welcome to Racket v5.3.1.9.<BR>&gt; 
          &gt;&gt;&gt;&gt;&gt;&gt; &gt; (flat-contract? 'x)<BR>&gt; 
          &gt;&gt;&gt;&gt;&gt;&gt; #t<BR>&gt; &gt;&gt;&gt;&gt;&gt;&gt; &gt; 
          (procedure? 'x)<BR>&gt; &gt;&gt;&gt;&gt;&gt;&gt; #f<BR>&gt; 
          &gt;&gt;&gt;&gt;&gt;&gt;<BR>&gt; &gt;&gt;&gt;&gt;&gt;&gt; The 
          flat-contract function is a holdover from the days when flat 
          contracts<BR>&gt; &gt;&gt;&gt;&gt;&gt;&gt; weren't able to be used 
          directly as predicate functions.<BR>&gt; 
          &gt;&gt;&gt;&gt;&gt;&gt;<BR>&gt; &gt;&gt;&gt;&gt;&gt;&gt;<BR>&gt; 
          &gt;&gt;&gt;&gt;&gt;&gt; I'll push a clarification to the docs for 
          flat-contract.<BR>&gt; &gt;&gt;&gt;&gt;&gt;<BR>&gt; 
          &gt;&gt;&gt;&gt;&gt;<BR>&gt; &gt;&gt;&gt;&gt;&gt; Isn't that the wrong 
          way around?&nbsp; The flat-contract function lets you use a<BR>&gt; 
          &gt;&gt;&gt;&gt;&gt; predicate as a contract, not a contract as a 
          predicate.&nbsp; Presumably it's<BR>&gt; &gt;&gt;&gt;&gt;&gt; from 
          before predicates could be used as contracts, although I 
          hadn't<BR>&gt; &gt;&gt;&gt;&gt;&gt; realized there was such a 
          time.<BR>&gt; &gt;&gt;&gt;&gt;<BR>&gt; &gt;&gt;&gt;&gt; There was a 
          time when you had to call 'flat-contract' to turn a<BR>&gt; 
          &gt;&gt;&gt;&gt; predicate into a contract, yep. There was a 
          housecleaning (anyone<BR>&gt; &gt;&gt;&gt;&gt; remember the days when 
          there were multiple suffixes (not just "/c") on<BR>&gt; 
          &gt;&gt;&gt;&gt; the combinators?) and I probably should have gotten 
          rid of it at that<BR>&gt; &gt;&gt;&gt;&gt; time, but I didn't.<BR>&gt; 
          &gt;&gt;&gt;&gt;<BR>&gt; &gt;&gt;&gt;&gt; (Oh and I mean "contracts" 
          where I wrote "preducate functions" above. Oops.)<BR>&gt; 
          &gt;&gt;&gt;&gt;<BR>&gt; &gt;&gt;&gt;&gt; Robby<BR>&gt; <BR>&gt; 
          <BR>&gt; ------------------------------<BR>&gt; <BR>&gt; Message: 
          3<BR>&gt; Date: Tue, 04 Dec 2012 21:30:23 -0700<BR>&gt; From: Neil 
          Toronto &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=neil.toronto@gmail.com" 
          ymailto="mailto:neil.toronto@gmail.com">neil.toronto@gmail.com</A>&gt;<BR>&gt; 
          To: <A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=users@racket-lang.org" 
          ymailto="mailto:users@racket-lang.org">users@racket-lang.org</A><BR>&gt; 
          Subject: Re: [racket] DRRacket right-click menu fragility in 
          Linux.<BR>&gt; Message-ID: &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=50BECDDF.4030508@gmail.com" 
          ymailto="mailto:50BECDDF.4030508@gmail.com">50BECDDF.4030508@gmail.com</A>&gt;<BR>&gt; 
          Content-Type: text/plain; charset=UTF-8; format=flowed<BR>&gt; 
          <BR>&gt; Could what you're experiencing have anything to do with 
          tooltips? It <BR>&gt; seems my right-click menu doesn't stay up 
          whenever there's a tooltip <BR>&gt; out. Which is, like, every time I 
          want it.<BR>&gt; <BR>&gt; Neil ?<BR>&gt; <BR>&gt; On 12/04/2012 07:55 
          PM, Ray Racine wrote:<BR>&gt; &gt; Yea, I didn't want to make a big 
          deal out of it, but the up/down button<BR>&gt; &gt; change did not fix 
          the issue.&nbsp;&nbsp;&nbsp;In fact I'd say no impact positive 
          or<BR>&gt; &gt; negative.<BR>&gt; &gt;<BR>&gt; &gt; It seems to happen 
          when there is additional drawing 'complexity' in<BR>&gt; &gt; 
          co-occurrence with the pop up drawing area.&nbsp; I.e. the pop up menu 
          is<BR>&gt; &gt; drawing where arrows are drawn or error highlighting 
          is occurring etc.<BR>&gt; &gt; Also maybe when the pop up menu area is 
          near the 'edge' of the Dr window<BR>&gt; &gt; and or pane area.&nbsp; 
          But again the problem is not consistently<BR>&gt; &gt; reproducible 
          yet happens more often then not.&nbsp; Its not a once in a 
          blue<BR>&gt; &gt; moon that thing.&nbsp; Sometimes an attempt to right 
          click pop up&nbsp; menu will<BR>&gt; &gt; fail numerous times in a row 
          then succeed for no apparent reason.<BR>&gt; &gt;<BR>&gt; &gt; On Dec 
          4, 2012 9:07 PM, "Robby Findler" &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=robby@eecs.northwestern.edu" 
          ymailto="mailto:robby@eecs.northwestern.edu">robby@eecs.northwestern.edu</A><BR>&gt; 
          &gt; &lt;mailto:<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=robby@eecs.northwestern.edu" 
          ymailto="mailto:robby@eecs.northwestern.edu">robby@eecs.northwestern.edu</A>&gt;&gt; 
          wrote:<BR>&gt; &gt;<BR>&gt; &gt;&nbsp; &nbsp;&nbsp;&nbsp;On Tue, Dec 
          4, 2012 at 6:11 PM, Stephen Chang &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=stchang@ccs.neu.edu" 
          ymailto="mailto:stchang@ccs.neu.edu">stchang@ccs.neu.edu</A><BR>&gt; 
          &gt;&nbsp; &nbsp;&nbsp;&nbsp;&lt;mailto:<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=stchang@ccs.neu.edu" 
          ymailto="mailto:stchang@ccs.neu.edu">stchang@ccs.neu.edu</A>&gt;&gt; 
          wrote:<BR>&gt; &gt;&nbsp; &nbsp; &nbsp; &gt; On Fri, Nov 2, 2012 at 
          9:33 PM, Robby Findler<BR>&gt; &gt;&nbsp; &nbsp; &nbsp; &gt; &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=robby@eecs.northwestern.edu" 
          ymailto="mailto:robby@eecs.northwestern.edu">robby@eecs.northwestern.edu</A><BR>&gt; 
          &gt;&nbsp; &nbsp;&nbsp;&nbsp;&lt;mailto:<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=robby@eecs.northwestern.edu" 
          ymailto="mailto:robby@eecs.northwestern.edu">robby@eecs.northwestern.edu</A>&gt;&gt; 
          wrote:<BR>&gt; &gt;&nbsp; &nbsp; &nbsp; &gt;&gt; I've pushed a fix to 
          this. Thanks to Matthew for looking into it and<BR>&gt; &gt;&nbsp; 
          &nbsp; &nbsp; &gt;&gt; sorting it out and sorry for the delay.<BR>&gt; 
          &gt;&nbsp; &nbsp; &nbsp; &gt;<BR>&gt; &gt;&nbsp; &nbsp; &nbsp; &gt; 
          I'm using git head and I'm still seeing this problem (Ubuntu<BR>&gt; 
          &gt;&nbsp; &nbsp;&nbsp;&nbsp;11.10). I<BR>&gt; &gt;&nbsp; &nbsp; 
          &nbsp; &gt; can't reliably reproduce it but in case it helps, it most 
          recently<BR>&gt; &gt;&nbsp; &nbsp; &nbsp; &gt; happened when I 
          selected tack arrows and now I can't bring up the<BR>&gt; &gt;&nbsp; 
          &nbsp;&nbsp;&nbsp;menu<BR>&gt; &gt;&nbsp; &nbsp; &nbsp; &gt; to untack 
          the arrows anymore.<BR>&gt; &gt;&nbsp; &nbsp; &nbsp; &gt;<BR>&gt; 
          &gt;<BR>&gt; &gt;&nbsp; &nbsp;&nbsp;&nbsp;The particular fix Matthew 
          pointed me to is popping up the menu on a<BR>&gt; &gt;&nbsp; 
          &nbsp;&nbsp;&nbsp;mouse down event, not a mouse up event.<BR>&gt; 
          &gt;<BR>&gt; &gt;&nbsp; &nbsp;&nbsp;&nbsp;<A 
          href="http://git.racket-lang.org/plt/blobdiff/27aa99944657c5827eee3772f715df7dd971d1e0..0377bda9474f8848a97509ace898174c83361006:/collects/framework/private/keymap.rkt" 
          target=_blank>http://git.racket-lang.org/plt/blobdiff/27aa99944657c5827eee3772f715df7dd971d1e0..0377bda9474f8848a97509ace898174c83361006:/collects/framework/private/keymap.rkt</A><BR>&gt; 
          &gt;<BR>&gt; &gt;&nbsp; &nbsp;&nbsp;&nbsp;So I guess there's something 
          else going on, too (because that's the<BR>&gt; &gt;&nbsp; 
          &nbsp;&nbsp;&nbsp;code that pops up the menu with the check syntax 
          items).<BR>&gt; &gt;<BR>&gt; &gt;&nbsp; 
          &nbsp;&nbsp;&nbsp;Robby<BR>&gt; &gt;<BR>&gt; &gt;<BR>&gt; &gt;<BR>&gt; 
          &gt; ____________________<BR>&gt; &gt;&nbsp; &nbsp; Racket Users 
          list:<BR>&gt; &gt;&nbsp; &nbsp; <A 
          href="http://lists.racket-lang.org/users" 
          target=_blank>http://lists.racket-lang.org/users</A><BR>&gt; 
          &gt;<BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; 
          ------------------------------<BR>&gt; <BR>&gt; Message: 4<BR>&gt; 
          Date: Wed, 5 Dec 2012 10:30:22 -0500<BR>&gt; From: Matthias Felleisen 
          &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=matthias@ccs.neu.edu" 
          ymailto="mailto:matthias@ccs.neu.edu">matthias@ccs.neu.edu</A>&gt;<BR>&gt; 
          To: Pierpaolo Bernardi &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=olopierpa@gmail.com" 
          ymailto="mailto:olopierpa@gmail.com">olopierpa@gmail.com</A>&gt;<BR>&gt; 
          Cc: Racket mailing list &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=users@racket-lang.org" 
          ymailto="mailto:users@racket-lang.org">users@racket-lang.org</A>&gt;<BR>&gt; 
          Subject: Re: [racket] minimum spanning tree<BR>&gt; Message-ID: &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=CE678990-63D0-4400-AF2A-C6B2880E4FFB@ccs.neu.edu" 
          ymailto="mailto:CE678990-63D0-4400-AF2A-C6B2880E4FFB@ccs.neu.edu">CE678990-63D0-4400-AF2A-C6B2880E4FFB@ccs.neu.edu</A>&gt;<BR>&gt; 
          Content-Type: text/plain; charset="iso-8859-1"<BR>&gt; <BR>&gt; 
          <BR>&gt; You are making a very good point here, especially the last 
          one, <BR>&gt; which in a sense exposes the folly of Perlis's maxim (it 
          is better<BR>&gt; to have one data type with a 100 operations than 10 
          data types <BR>&gt; with 10 operations each). One, the maxim biases 
          programmers <BR>&gt; and before they know it, they have introduced bad 
          dependences <BR>&gt; and performance problems and whoknowswhat. 
          <BR>&gt; <BR>&gt; 
          ---------------------------------------------------------------<BR>&gt; 
          <BR>&gt; Having said that, I think Ian's point is equally good. So 
          here<BR>&gt; is what I am wondering. <BR>&gt; <BR>&gt; Isn't the case 
          of graphs worth a case study where we define <BR>&gt; a WIDE interface 
          for graphs and their operations, which we <BR>&gt; can do so with 
          contracts. Then we implement it in several <BR>&gt; different ways and 
          conduct performance studies (small and<BR>&gt; large). And we 
          advertise, which library is good for which <BR>&gt; kind of scenario. 
          <BR>&gt; <BR>&gt; I am sure that some data structure person has done 
          this<BR>&gt; for C++ or some such language. The Saarbr?cken MPI 1 
          comes<BR>&gt; to mind. BUT, I am also sure that we don't have it and 
          that<BR>&gt; we would benefit from having one. <BR>&gt; <BR>&gt; NOW: 
          as we conduct this study, we might be able to articulate<BR>&gt; 
          performance "contracts" (that's probably the wrong word) and<BR>&gt; 
          possibly learn how to add those to library implementations as<BR>&gt; 
          a secondary interface. Doing so would once again distinguish<BR>&gt; 
          Racket from other programming languages. <BR>&gt; <BR>&gt; It is 
          probably a dissertation, possibly more. <BR>&gt; <BR>&gt; <BR>&gt; 
          <BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; 
          <BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; <BR>&gt; 
          <BR>&gt; <BR>&gt; <BR>&gt; On Dec 4, 2012, at 5:36 AM, Pierpaolo 
          Bernardi wrote:<BR>&gt; <BR>&gt; &gt; On Mon, Dec 3, 2012 at 5:07 PM, 
          J. Ian Johnson &lt;<A 
          href="http://us.mc1133.mail.yahoo.com/mc/compose?to=ianj@ccs.neu.edu" 
          ymailto="mailto:ianj@ccs.neu.edu">ianj@ccs.neu.edu</A>&gt; 
          wrote:<BR>&gt; &gt;&gt; Graph algorithms are often meant to be very 
          fast, and different algorithms necessitate different representations. 
          Two popular representations are adjacency lists and shared 
          structures.<BR>&gt; &gt; <BR>&gt; &gt; The representations usually 
          used in general purpose graphs libraries<BR>&gt; &gt; are adiacency 
          lists and incidence matrices.<BR>&gt; &gt; <BR>&gt; &gt; Two good 
          examples that I know of are:&nbsp; Knuth's Stanford GraphBase<BR>&gt; 
          &gt; (available from his home page and in published book form), and 
          the<BR>&gt; &gt; Combinatorica library for Mathematica (code available 
          freely on the<BR>&gt; &gt; net, manual available as a published book 
          "Computational Discrete<BR>&gt; &gt; Mathematics" by Skiena &amp; 
          Pemmaraju).<BR>&gt; &gt; <BR>&gt; &gt;&gt; It also isn't right to call 
          them lists unless you're talking about multigraphs. Indeed successor 
          nodes should be treated as a set, but Racket's sets have quite a bit 
          of overhead, especially for small sets. Should it be fast to compute 
          predecessor nodes? There are too many considerations for there to be 
          just one blessed representation, IMHO.<BR>&gt; &gt; <BR>&gt; &gt; 
          Linked lists made of cons pairs are not the best data structure 
          for<BR>&gt; &gt; every possible use of a sequence data 
          structure.&nbsp; However, we find<BR>&gt; &gt; this data structure 
          very useful, don't we?&nbsp; we force them into uses<BR>&gt; &gt; for 
          which they are not optimal, because of the convenience of 
          having<BR>&gt; &gt; available a vast library using them. And when we 
          can't fit them to our<BR>&gt; &gt; purpose we use a more specialized 
          data structure.<BR>&gt; &gt; <BR>&gt; &gt; I think a similar 
          compromise for a graph data structure would be very useful.<BR>&gt; 
          &gt; <BR>&gt; &gt; Cheers<BR>&gt; &gt; P.<BR>&gt; &gt; <BR>&gt; &gt; 
          ____________________<BR>&gt; &gt;&nbsp; Racket Users list:<BR>&gt; 
          &gt;&nbsp; <A href="http://lists.racket-lang.org/users" 
          target=_blank>http://lists.racket-lang.org/users</A><BR>&gt; <BR>&gt; 
          -------------- next part --------------<BR>&gt; A non-text attachment 
          was scrubbed...<BR>&gt; Name: smime.p7s<BR>&gt; Type: 
          application/pkcs7-signature<BR>&gt; Size: 4373 bytes<BR>&gt; Desc: not 
          available<BR>&gt; URL: &lt;<A 
          href="http://lists.racket-lang.org/users/archive/attachments/20121205/52954024/attachment.p7s" 
          target=_blank>http://lists.racket-lang.org/users/archive/attachments/20121205/52954024/attachment.p7s</A>&gt;<BR>&gt; 
          <BR>&gt; End of users Digest, Vol 88, Issue 18<BR>&gt; 
          *************************************<BR>&gt; 
          ____________________<BR>&gt;&nbsp; Racket Users list:<BR>&gt;&nbsp; <A 
          href="http://lists.racket-lang.org/users" 
          target=_blank>http://lists.racket-lang.org/users</A><BR><BR></DIV></BLOCKQUOTE></TD></TR></TBODY></TABLE>
  <P>
  <HR>

  <P></P>____________________<BR>&nbsp; Racket Users list:<BR>&nbsp; 
  http://lists.racket-lang.org/users<BR></BLOCKQUOTE></BODY></HTML>