<div>Hello,</div><div><br></div>I am personally also very interested in this topic, if Matthias and Erich would shed some light on it. <div><br></div><div>I have only done system programming in assembly and C, and found that I frequently did a lot of manual placement and shuffling of data in memory, with the usual pointer tricks.</div>
<div><br></div><div>Off the top of my head, I do not how those same tasks would be accomplished in a dynamically typed, and garbage-collected language like Scheme. Would anyone be able to explain the gist of it?</div><div>
<br></div><div>Of course, there are real systems that are actually built upon such languages. The Symbolics machines and Wirth's Oberon systems come to mind. I am still reading through resources to figure out how they did it.</div>
<div><br></div><div>Thank you for any insight offered.</div><span class="HOEnZb"><font color="#888888"><div> -Patrick</div></font></span><br><div class="gmail_quote">On Wed, Dec 5, 2012 at 10:30 AM, Patrick Li <span dir="ltr"><<a href="mailto:patrickli.2001@gmail.com" target="_blank">patrickli.2001@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>Hello,</div><div><br></div>I am personally also very interested in this topic, if Matthias and Erich would shed some light on it. <div>
<br></div><div>I have only done system programming in assembly and C, and found that I frequently did a lot of manual placement and shuffling of data in memory, with the usual pointer tricks.</div>
<div><br></div><div>Off the top of my head, I do not how those same tasks would be accomplished in a dynamically typed, and garbage-collected language like Scheme. Would anyone be able to explain the gist of it?</div><div>
<br></div><div>Of course, there are real systems that are actually built upon such languages. The Symbolics machines and Wirth's Oberon systems come to mind. I am still reading through resources to figure out how they did it.</div>
<div><br></div><div>Thank you for any insight offered.</div><span class="HOEnZb"><font color="#888888"><div> -Patrick</div></font></span><div class="HOEnZb"><div class="h5"><div><br></div><div><br></div><div><br><br><div class="gmail_quote">
On Wed, Dec 5, 2012 at 9:30 AM, Rüdiger Asche <span dir="ltr"><<a href="mailto:rac@ruediger-asche.de" target="_blank">rac@ruediger-asche.de</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><u></u>
<div 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 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> </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 support the Graphmaster AX-B34x series of
graphics cards in accelerated mode?" </div>
<div><font face="Arial"></font> </div>
<blockquote style="BORDER-LEFT:#000000 2px solid;PADDING-LEFT:5px;PADDING-RIGHT:0px;MARGIN-LEFT:5px;MARGIN-RIGHT:0px"><div><div>
<div style="FONT:10pt arial">----- Original Message ----- </div>
<div style="FONT:10pt arial;BACKGROUND:#e4e4e4"><b>From:</b>
<a title="davidblubaugh2000@yahoo.com" href="mailto:davidblubaugh2000@yahoo.com" target="_blank">David Blubaugh</a> </div>
<div style="FONT:10pt arial"><b>To:</b> <a title="matthias@ccs.neu.edu" href="mailto:matthias@ccs.neu.edu" target="_blank">Matthias Felleisen</a> </div>
<div style="FONT:10pt arial"><b>Cc:</b> <a title="users@racket-lang.org" href="mailto:users@racket-lang.org" target="_blank">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> </div>
<div> </div>
<div>Is there a way I can obtain help in acquiring funding in developing
Racket into a real OS?? I would love to see how far we can take
this concept !!! </div>
<div> </div>
<div>Apple and MacOS watch out here comes something with more powerful
features !!!</div>
<div> </div>
<div>David Blubaugh<br><br>--- On <b>Wed, 12/5/12, Matthias Felleisen
<i><<a href="mailto:matthias@ccs.neu.edu" target="_blank">matthias@ccs.neu.edu</a>></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 <<a href="mailto:matthias@ccs.neu.edu" target="_blank">matthias@ccs.neu.edu</a>><br>Subject:
Re: [racket] OPERATING SYSTEM ON A FPGA<br>To: "David Blubaugh"
<<a href="mailto:davidblubaugh2000@yahoo.com" target="_blank">davidblubaugh2000@yahoo.com</a>><br>Cc:
<a href="mailto:users@racket-lang.org" target="_blank">users@racket-lang.org</a><br>Date: Wednesday, December 5, 2012, 11:24
AM<br><br>
<div><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>> To All,<br>> <br>>
<br>> I was wondering if anyone has ever created a real time
operating system with Racket. As well as, create applications
within a FPGA device by utilizing racket?? Can racket be a
solution to ALL PROBLEMS that is the question.<br>>
<br>> <br>> David Blubaugh<br>> <br>> <br>>
<br>> --- On Wed, 12/5/12, <a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=users-request@racket-lang.org" target="_blank">users-request@racket-lang.org</a>
<<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=users-request@racket-lang.org" target="_blank">users-request@racket-lang.org</a>>
wrote:<br>> <br>> From: <a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=users-request@racket-lang.org" target="_blank">users-request@racket-lang.org</a>
<<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=users-request@racket-lang.org" target="_blank">users-request@racket-lang.org</a>><br>>
Subject: users Digest, Vol 88, Issue 18<br>> To: <a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=users@racket-lang.org" target="_blank">users@racket-lang.org</a><br>>
Date: Wednesday, December 5, 2012, 10:30 AM<br>> <br>> Send
users mailing list submissions to<br>> <a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=users@racket-lang.org" target="_blank">users@racket-lang.org</a><br>>
<br>> To subscribe or unsubscribe via the World Wide Web,
visit<br>> <a href="http://lists.racket-lang.org/users/listinfo" target="_blank">http://lists.racket-lang.org/users/listinfo</a><br>>
or, via email, send a message with subject or body 'help'
to<br>> <a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=users-request@racket-lang.org" target="_blank">users-request@racket-lang.org</a><br>>
<br>> You can reach the person managing the list at<br>>
<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=users-owner@racket-lang.org" target="_blank">users-owner@racket-lang.org</a><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>> <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a>]<br>> <br>>
<br>> Today's Topics:<br>> <br>> 1. Re: Whats
the difference between a predicate and a flat<br>>
contract? (Harry Spier)<br>> 2. Re:
Whats the difference between a predicate and a flat<br>>
contract? (Robby Findler)<br>>
3. Re: DRRacket right-click menu fragility in Linux. (Neil
Toronto)<br>> 4. Re: minimum spanning tree (Matthias
Felleisen)<br>> <br>> <br>>
----------------------------------------------------------------------<br>>
<br>> Message: 1<br>> Date: Tue, 4 Dec 2012 21:59:42
-0500<br>> From: Harry Spier <<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=vasishtha.spier@gmail.com" target="_blank">vasishtha.spier@gmail.com</a>><br>>
To: Robby Findler <<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=robby@eecs.northwestern.edu" target="_blank">robby@eecs.northwestern.edu</a>><br>>
Cc: Carl Eastlund <<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=cce@ccs.neu.edu" target="_blank">cce@ccs.neu.edu</a>>, users <<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=users@racket-lang.org" target="_blank">users@racket-lang.org</a>><br>
>
Subject: Re: [racket] Whats the difference between a predicate and
a<br>> flat contract?<br>>
Message-ID:<br>>
<CAJ3b0o9_yd-j4U6tbEOQaB+JKWto_A1XwSrh3_xyRTk=Uviy=<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=Q@mail.gmail.com" target="_blank">Q@mail.gmail.com</a>><br>>
Content-Type: text/plain; charset=UTF-8<br>> <br>> Are
flat-contract and flat-contract-predicate equivalent?<br>> <br>>
> ((flat-contract 'x) 'x)<br>> #t<br>> >
((flat-contract-predicate 'x) 'x)<br>> #t<br>> >
((flat-contract 'x) 'y)<br>> #f<br>> >
((flat-contract-predicate 'x) 'y)<br>> #f<br>> ><br>>
<br>> Harry<br>> <br>> On Tue, Dec 4, 2012 at 9:41 PM, Robby
Findler<br>> <<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=robby@eecs.northwestern.edu" target="_blank">robby@eecs.northwestern.edu</a>>
wrote:<br>> > It does that for symbols, but not
everything.<br>> ><br>> > This is the place you should be
looking, I think.<br>> ><br>> > <a href="http://docs.racket-lang.org/reference/contracts.html" target="_blank">http://docs.racket-lang.org/reference/contracts.html</a><br>>
><br>> > Robby<br>> ><br>> > On Tue, Dec 4, 2012
at 8:38 PM, Harry Spier <<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=vasishtha.spier@gmail.com" target="_blank">vasishtha.spier@gmail.com</a>>
wrote:<br>> >> OK I see the docs to flat-contract? but not
flat-contract<br>> >> <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>
>
>> mention that flat-contracts are more than predicates.
Those docs<br>> >> don't mention it, but it appears from
experimentation that<br>> >> (flat-contract something)
produces a procedure such that<br>> >> ((flat-contract
something) x) is #t if something eq? x .<br>> >><br>>
>> Harry Spier<br>> >><br>> >> On Tue, Dec 4,
2012 at 8:57 PM, Robby Findler<br>> >> <<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=robby@eecs.northwestern.edu" target="_blank">robby@eecs.northwestern.edu</a>>
wrote:<br>> >>> On Tue, Dec 4, 2012 at 7:28 PM, Carl
Eastlund <<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=cce@ccs.neu.edu" target="_blank">cce@ccs.neu.edu</a>>
wrote:<br>> >>>> On Tue, Dec 4, 2012 at 7:49 PM, Robby
Findler <<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=robby@eecs.northwestern.edu" target="_blank">robby@eecs.northwestern.edu</a>><br>>
>>>> wrote:<br>> >>>>><br>>
>>>>> Flat contracts includes more things than
contracts. For example:<br>> >>>>><br>>
>>>>> [robby@yanpu]
~/git/plt/collects/scribblings/reference$ racket<br>>
>>>>> Welcome to Racket v5.3.1.9.<br>>
>>>>> > (flat-contract? 'x)<br>>
>>>>> #t<br>> >>>>> > (procedure?
'x)<br>> >>>>> #f<br>>
>>>>><br>> >>>>> The flat-contract
function is a holdover from the days when flat contracts<br>>
>>>>> weren't able to be used directly as predicate
functions.<br>> >>>>><br>>
>>>>><br>> >>>>> I'll push a
clarification to the docs for flat-contract.<br>>
>>>><br>> >>>><br>> >>>>
Isn't that the wrong way around? The flat-contract function lets
you use a<br>> >>>> predicate as a contract, not a
contract as a predicate. Presumably it's<br>>
>>>> from before predicates could be used as contracts,
although I hadn't<br>> >>>> realized there was such a
time.<br>> >>><br>> >>> There was a time when
you had to call 'flat-contract' to turn a<br>> >>>
predicate into a contract, yep. There was a housecleaning
(anyone<br>> >>> remember the days when there were
multiple suffixes (not just "/c") on<br>> >>> the
combinators?) and I probably should have gotten rid of it at
that<br>> >>> time, but I didn't.<br>>
>>><br>> >>> (Oh and I mean "contracts" where I
wrote "preducate functions" above. Oops.)<br>> >>><br>>
>>> Robby<br>> <br>> <br>>
------------------------------<br>> <br>> Message: 2<br>>
Date: Tue, 4 Dec 2012 21:05:45 -0600<br>> From: Robby Findler
<<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=robby@eecs.northwestern.edu" target="_blank">robby@eecs.northwestern.edu</a>><br>>
To: Harry Spier <<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=vasishtha.spier@gmail.com" target="_blank">vasishtha.spier@gmail.com</a>><br>>
Cc: Carl Eastlund <<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=cce@ccs.neu.edu" target="_blank">cce@ccs.neu.edu</a>>, users <<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=users@racket-lang.org" target="_blank">users@racket-lang.org</a>><br>
>
Subject: Re: [racket] Whats the difference between a predicate and
a<br>> flat contract?<br>>
Message-ID:<br>> <<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=CAL3TdOMVL4xerBMr9xWqNz3tPjxbSXDfjaiJro2N9j6fxrSrOQ@mail.gmail.com" target="_blank">CAL3TdOMVL4xerBMr9xWqNz3tPjxbSXDfjaiJro2N9j6fxrSrOQ@mail.gmail.com</a>><br>
>
Content-Type: text/plain; charset=UTF-8<br>> <br>> Yes ..., I
think so (well, eq? probably messes things up, as usual).<br>>
<br>> But that's a funny question! What's really going on there is
that<br>> flat-contract is coercing the value into a contract, and
flat<br>> contracts also acts as predicate functions (matching what
the<br>> contracts match). flat-contract-predicate takes its
argument, turns it<br>> into the contract and then returns the
predicate. This last step is<br>> useless, as flat-contracts are
now predicates without any coercion<br>> (again, not something that
was always the case).<br>> <br>> I'll add a similar note to the
docs for this function too.<br>> <br>> Robby<br>> <br>> On
Tue, Dec 4, 2012 at 8:59 PM, Harry Spier <<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=vasishtha.spier@gmail.com" target="_blank">vasishtha.spier@gmail.com</a>>
wrote:<br>> > Are flat-contract and flat-contract-predicate
equivalent?<br>> ><br>> >> ((flat-contract 'x)
'x)<br>> > #t<br>> >> ((flat-contract-predicate 'x)
'x)<br>> > #t<br>> >> ((flat-contract 'x) 'y)<br>>
> #f<br>> >> ((flat-contract-predicate 'x) 'y)<br>>
> #f<br>> >><br>> ><br>> > Harry<br>>
><br>> > On Tue, Dec 4, 2012 at 9:41 PM, Robby
Findler<br>> > <<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=robby@eecs.northwestern.edu" target="_blank">robby@eecs.northwestern.edu</a>>
wrote:<br>> >> It does that for symbols, but not
everything.<br>> >><br>> >> This is the place you
should be looking, I think.<br>> >><br>> >> <a href="http://docs.racket-lang.org/reference/contracts.html" target="_blank">http://docs.racket-lang.org/reference/contracts.html</a><br>>
>><br>> >> Robby<br>> >><br>> >> On
Tue, Dec 4, 2012 at 8:38 PM, Harry Spier <<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=vasishtha.spier@gmail.com" target="_blank">vasishtha.spier@gmail.com</a>>
wrote:<br>> >>> OK I see the docs to flat-contract? but
not flat-contract<br>> >>> <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>
>
>>> mention that flat-contracts are more than
predicates. Those docs<br>> >>> don't mention it,
but it appears from experimentation that<br>> >>>
(flat-contract something) produces a procedure such that<br>>
>>> ((flat-contract something) x) is #t if something eq? x
.<br>> >>><br>> >>> Harry Spier<br>>
>>><br>> >>> On Tue, Dec 4, 2012 at 8:57 PM,
Robby Findler<br>> >>> <<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=robby@eecs.northwestern.edu" target="_blank">robby@eecs.northwestern.edu</a>>
wrote:<br>> >>>> On Tue, Dec 4, 2012 at 7:28 PM, Carl
Eastlund <<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=cce@ccs.neu.edu" target="_blank">cce@ccs.neu.edu</a>>
wrote:<br>> >>>>> On Tue, Dec 4, 2012 at 7:49 PM,
Robby Findler <<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=robby@eecs.northwestern.edu" target="_blank">robby@eecs.northwestern.edu</a>><br>>
>>>>> wrote:<br>> >>>>>><br>>
>>>>>> Flat contracts includes more things than
contracts. For example:<br>> >>>>>><br>>
>>>>>> [robby@yanpu]
~/git/plt/collects/scribblings/reference$ racket<br>>
>>>>>> Welcome to Racket v5.3.1.9.<br>>
>>>>>> > (flat-contract? 'x)<br>>
>>>>>> #t<br>> >>>>>> >
(procedure? 'x)<br>> >>>>>> #f<br>>
>>>>>><br>> >>>>>> The
flat-contract function is a holdover from the days when flat
contracts<br>> >>>>>> weren't able to be used
directly as predicate functions.<br>>
>>>>>><br>> >>>>>><br>>
>>>>>> I'll push a clarification to the docs for
flat-contract.<br>> >>>>><br>>
>>>>><br>> >>>>> Isn't that the wrong
way around? The flat-contract function lets you use a<br>>
>>>>> predicate as a contract, not a contract as a
predicate. Presumably it's<br>> >>>>> from
before predicates could be used as contracts, although I
hadn't<br>> >>>>> realized there was such a
time.<br>> >>>><br>> >>>> There was a
time when you had to call 'flat-contract' to turn a<br>>
>>>> predicate into a contract, yep. There was a
housecleaning (anyone<br>> >>>> remember the days when
there were multiple suffixes (not just "/c") on<br>>
>>>> the combinators?) and I probably should have gotten
rid of it at that<br>> >>>> time, but I didn't.<br>>
>>>><br>> >>>> (Oh and I mean "contracts"
where I wrote "preducate functions" above. Oops.)<br>>
>>>><br>> >>>> Robby<br>> <br>>
<br>> ------------------------------<br>> <br>> Message:
3<br>> Date: Tue, 04 Dec 2012 21:30:23 -0700<br>> From: Neil
Toronto <<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=neil.toronto@gmail.com" target="_blank">neil.toronto@gmail.com</a>><br>>
To: <a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=users@racket-lang.org" target="_blank">users@racket-lang.org</a><br>>
Subject: Re: [racket] DRRacket right-click menu fragility in
Linux.<br>> Message-ID: <<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=50BECDDF.4030508@gmail.com" target="_blank">50BECDDF.4030508@gmail.com</a>><br>>
Content-Type: text/plain; charset=UTF-8; format=flowed<br>>
<br>> Could what you're experiencing have anything to do with
tooltips? It <br>> seems my right-click menu doesn't stay up
whenever there's a tooltip <br>> out. Which is, like, every time I
want it.<br>> <br>> Neil ?<br>> <br>> On 12/04/2012 07:55
PM, Ray Racine wrote:<br>> > Yea, I didn't want to make a big
deal out of it, but the up/down button<br>> > change did not fix
the issue. In fact I'd say no impact positive
or<br>> > negative.<br>> ><br>> > It seems to happen
when there is additional drawing 'complexity' in<br>> >
co-occurrence with the pop up drawing area. I.e. the pop up menu
is<br>> > drawing where arrows are drawn or error highlighting
is occurring etc.<br>> > Also maybe when the pop up menu area is
near the 'edge' of the Dr window<br>> > and or pane area.
But again the problem is not consistently<br>> > reproducible
yet happens more often then not. Its not a once in a
blue<br>> > moon that thing. Sometimes an attempt to right
click pop up menu will<br>> > fail numerous times in a row
then succeed for no apparent reason.<br>> ><br>> > On Dec
4, 2012 9:07 PM, "Robby Findler" <<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=robby@eecs.northwestern.edu" target="_blank">robby@eecs.northwestern.edu</a><br>>
> <mailto:<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=robby@eecs.northwestern.edu" target="_blank">robby@eecs.northwestern.edu</a>>>
wrote:<br>> ><br>> > On Tue, Dec
4, 2012 at 6:11 PM, Stephen Chang <<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=stchang@ccs.neu.edu" target="_blank">stchang@ccs.neu.edu</a><br>>
> <mailto:<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=stchang@ccs.neu.edu" target="_blank">stchang@ccs.neu.edu</a>>>
wrote:<br>> > > On Fri, Nov 2, 2012 at
9:33 PM, Robby Findler<br>> > > <<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=robby@eecs.northwestern.edu" target="_blank">robby@eecs.northwestern.edu</a><br>>
> <mailto:<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=robby@eecs.northwestern.edu" target="_blank">robby@eecs.northwestern.edu</a>>>
wrote:<br>> > >> I've pushed a fix to
this. Thanks to Matthew for looking into it and<br>> >
>> sorting it out and sorry for the delay.<br>>
> ><br>> > >
I'm using git head and I'm still seeing this problem (Ubuntu<br>>
> 11.10). I<br>> >
> can't reliably reproduce it but in case it helps, it most
recently<br>> > > happened when I
selected tack arrows and now I can't bring up the<br>> >
menu<br>> > > to untack
the arrows anymore.<br>> > ><br>>
><br>> > The particular fix Matthew
pointed me to is popping up the menu on a<br>> >
mouse down event, not a mouse up event.<br>>
><br>> > <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>
>
><br>> > So I guess there's something
else going on, too (because that's the<br>> >
code that pops up the menu with the check syntax
items).<br>> ><br>> >
Robby<br>> ><br>> ><br>> ><br>>
> ____________________<br>> > Racket Users
list:<br>> > <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>>
><br>> <br>> <br>> <br>>
------------------------------<br>> <br>> Message: 4<br>>
Date: Wed, 5 Dec 2012 10:30:22 -0500<br>> From: Matthias Felleisen
<<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=matthias@ccs.neu.edu" target="_blank">matthias@ccs.neu.edu</a>><br>>
To: Pierpaolo Bernardi <<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=olopierpa@gmail.com" target="_blank">olopierpa@gmail.com</a>><br>>
Cc: Racket mailing list <<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=users@racket-lang.org" target="_blank">users@racket-lang.org</a>><br>>
Subject: Re: [racket] minimum spanning tree<br>> Message-ID: <<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=CE678990-63D0-4400-AF2A-C6B2880E4FFB@ccs.neu.edu" target="_blank">CE678990-63D0-4400-AF2A-C6B2880E4FFB@ccs.neu.edu</a>><br>
>
Content-Type: text/plain; charset="iso-8859-1"<br>> <br>>
<br>> You are making a very good point here, especially the last
one, <br>> which in a sense exposes the folly of Perlis's maxim (it
is better<br>> to have one data type with a 100 operations than 10
data types <br>> with 10 operations each). One, the maxim biases
programmers <br>> and before they know it, they have introduced bad
dependences <br>> and performance problems and whoknowswhat.
<br>> <br>>
---------------------------------------------------------------<br>>
<br>> Having said that, I think Ian's point is equally good. So
here<br>> is what I am wondering. <br>> <br>> Isn't the case
of graphs worth a case study where we define <br>> a WIDE interface
for graphs and their operations, which we <br>> can do so with
contracts. Then we implement it in several <br>> different ways and
conduct performance studies (small and<br>> large). And we
advertise, which library is good for which <br>> kind of scenario.
<br>> <br>> I am sure that some data structure person has done
this<br>> for C++ or some such language. The Saarbr?cken MPI 1
comes<br>> to mind. BUT, I am also sure that we don't have it and
that<br>> we would benefit from having one. <br>> <br>> NOW:
as we conduct this study, we might be able to articulate<br>>
performance "contracts" (that's probably the wrong word) and<br>>
possibly learn how to add those to library implementations as<br>>
a secondary interface. Doing so would once again distinguish<br>>
Racket from other programming languages. <br>> <br>> It is
probably a dissertation, possibly more. <br>> <br>> <br>>
<br>> <br>> <br>> <br>> <br>> <br>> <br>>
<br>> <br>> <br>> <br>> <br>> <br>> <br>>
<br>> <br>> <br>> On Dec 4, 2012, at 5:36 AM, Pierpaolo
Bernardi wrote:<br>> <br>> > On Mon, Dec 3, 2012 at 5:07 PM,
J. Ian Johnson <<a href="http://us.mc1133.mail.yahoo.com/mc/compose?to=ianj@ccs.neu.edu" target="_blank">ianj@ccs.neu.edu</a>>
wrote:<br>> >> 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>> > <br>> > The representations usually
used in general purpose graphs libraries<br>> > are adiacency
lists and incidence matrices.<br>> > <br>> > Two good
examples that I know of are: Knuth's Stanford GraphBase<br>>
> (available from his home page and in published book form), and
the<br>> > Combinatorica library for Mathematica (code available
freely on the<br>> > net, manual available as a published book
"Computational Discrete<br>> > Mathematics" by Skiena &
Pemmaraju).<br>> > <br>> >> 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>> > <br>> >
Linked lists made of cons pairs are not the best data structure
for<br>> > every possible use of a sequence data
structure. However, we find<br>> > this data structure
very useful, don't we? we force them into uses<br>> > for
which they are not optimal, because of the convenience of
having<br>> > available a vast library using them. And when we
can't fit them to our<br>> > purpose we use a more specialized
data structure.<br>> > <br>> > I think a similar
compromise for a graph data structure would be very useful.<br>>
> <br>> > Cheers<br>> > P.<br>> > <br>> >
____________________<br>> > Racket Users list:<br>>
> <a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>> <br>>
-------------- next part --------------<br>> A non-text attachment
was scrubbed...<br>> Name: smime.p7s<br>> Type:
application/pkcs7-signature<br>> Size: 4373 bytes<br>> Desc: not
available<br>> URL: <<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>><br>
>
<br>> End of users Digest, Vol 88, Issue 18<br>>
*************************************<br>>
____________________<br>> Racket Users list:<br>> <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>
</div></div><p>
</p><hr><div>
<p></p>____________________<br> Racket Users list:<br>
<a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br></div><p></p></blockquote></div>
<br>____________________<br>
Racket Users list:<br>
<a href="http://lists.racket-lang.org/users" target="_blank">http://lists.racket-lang.org/users</a><br>
<br></blockquote></div><br></div>
</div></div></blockquote></div><br>