Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

New PLT utility

0 views
Skip to first unread message

Paul Steckler

unread,
Apr 1, 2004, 1:21:20 PM4/1/04
to
After many years of effort, I've finally finished
work on a utility that will soon be available from PLT.

The utility is called "down", for reasons that will
become clear. It takes as input an arbitrary S-expression,
and returns a boolean, as follows. If the S-expression
input would return a Scheme value in finite time, when supplied
to PLT Scheme's "eval", "down" returns #t; otherwise it
returns #f. The time needed for "down" to perform this calculation
is not specified. The name "down" is used, because a downward
arrow is used to denote termination, which is what the utility
detects.

The algorithm was kind of tricky to work out, but dang,
it works!

Look for this utility in the next PLT distribution.
More information about the program will be available
in the manual page, plt/man/man1/plt-down.man.

-- Paul

tal...@noshpam.lbl.government

unread,
Apr 1, 2004, 1:47:49 PM4/1/04
to
Correct me if I'm wrong, but isn't there a halting-problem somewhere
in that formulation?

Specifically, what's the point of the '#f' return value; if the
s-expression never 'halts', then will '#f' ever be returned?

~Tomer

Paul Steckler <st...@ccs.neu.edu> writes:

--
()

Richard C. Cobbe

unread,
Apr 1, 2004, 2:13:11 PM4/1/04
to
tal...@noshpam.lbl.government writes:

> Correct me if I'm wrong, but isn't there a halting-problem somewhere
> in that formulation?

This utility is almost exactly a solution to the halting problem, yes. But
see below (and notice the date of Paul's original post).

> Paul Steckler <st...@ccs.neu.edu> writes:

<SNIP>

>> Look for this utility in the next PLT distribution.
>> More information about the program will be available
>> in the manual page, plt/man/man1/plt-down.man.

~~~~~~~~~~~~
But it's *really* just a setup for a somewhat obscure joke.

Richard

Anton van Straaten

unread,
Apr 1, 2004, 2:26:05 PM4/1/04
to
Tomer <tal...@noshpam.lbl.government> wrote:
> Correct me if I'm wrong, but isn't there a halting-problem somewhere
> in that formulation?
>
> Specifically, what's the point of the '#f' return value; if the
> s-expression never 'halts', then will '#f' ever be returned?

That's a valid concern - in general, the commercial applications for this
promising utility are going to be somewhat limited until this performance
issue can be dealt with. Once that's dealt with, though, I can see a
promising future for it: for example, being able to easily ensure that
high-reliability software won't crash.

To be fair, Paul did address this point:

> The time needed for "down" to perform this calculation
> is not specified.

I downloaded a copy from the PLT cvs, and it seems to work exactly as
advertised. I'm still getting familiar with it. For example, I tried
evaluating (down ((call/cc call/cc) (call/cc call/cc))), and was taking a
long time. Then I realized that "down" is a function, not a macro, so you
have to quote the expression. Silly me, it was trying to evaluate the
expression before passing it to down, which kinda defeats the purpose. So I
quoted the expression, and it seems to be working much better now, although
it hasn't quite finished yet.

BTW, in cvs, "plt" in the man filename is misspelled as "pilt" for some
reason.

Anton


Anton van Straaten

unread,
Apr 1, 2004, 3:01:02 PM4/1/04
to
Anton van Straaten wrote:
> I downloaded a copy from the PLT cvs, and it seems to work exactly as
> advertised. I'm still getting familiar with it. For example, I tried
> evaluating (down ((call/cc call/cc) (call/cc call/cc))), and was taking a
> long time. Then I realized that "down" is a function, not a macro, so you
> have to quote the expression. Silly me, it was trying to evaluate the
> expression before passing it to down, which kinda defeats the purpose. So
I
> quoted the expression, and it seems to be working much better now,
although
> it hasn't quite finished yet.

This test finally returned an answer of #f. Took about 45 minutes
altogether. Impressive!

But I have a problem: "down" is still very new, and it could have bugs. How
can I tell for sure that this answer is correct?


Don Groves

unread,
Apr 1, 2004, 7:02:18 PM4/1/04
to


Easy: (correct? #'down '((call/cc call/cc) (call/cc call/cc)))))

Code for correct? will be available 1 Apr 2005
--
dg
Using M2, Opera's revolutionary e-mail client: http://www.opera.com/m2/

Vincenzo aka Nick Name

unread,
Apr 1, 2004, 9:09:26 PM4/1/04
to
Don Groves wrote:

>
> Easy: (correct? #'down '((call/cc call/cc) (call/cc call/cc)))))
>
> Code for correct? will be available 1 Apr 2005

And, of course, it will be applied to itself to check correctness of
implementation before the release.

V.

Don Groves

unread,
Apr 1, 2004, 11:17:00 PM4/1/04
to

Of course.

Abdulaziz Ghuloum

unread,
Apr 2, 2004, 12:23:06 AM4/2/04
to
> Anton van Straaten wrote:
> This test finally returned an answer of #f. Took about 45 minutes
> altogether. Impressive!
>
> But I have a problem: "down" is still very new, and it could have bugs. How
> can I tell for sure that this answer is correct?

One thing for sure though is that down will always terminate for every input:

Proof:
> (down '(down (read)))
#t

So, if it takes too long, just wait; it will get there.

Aziz,,,

Ivan Boldyrev

unread,
Apr 2, 2004, 10:45:26 AM4/2/04
to

Cool!!! I was dreaming about such a tool for a very long time!!!

Could you, please, test this sample:

,----
| (define (test n)
| (if (down '(test 1))
| (test)
| #t))
|
| (test 1)
`----

--
Ivan Boldyrev

Outlook has performed an illegal operation and will be shut down.
If the problem persists, contact the program vendor.

Tom Breton

unread,
Apr 2, 2004, 6:15:35 PM4/2/04
to
Paul Steckler <st...@ccs.neu.edu> writes:

> After many years of effort, I've finally finished
> work on a utility that will soon be available from PLT.
>
> The utility is called "down", for reasons that will
> become clear. It takes as input an arbitrary S-expression,
> and returns a boolean, as follows. If the S-expression
> input would return a Scheme value in finite time, when supplied
> to PLT Scheme's "eval", "down" returns #t; otherwise it
> returns #f. The time needed for "down" to perform this calculation
> is not specified. The name "down" is used, because a downward
> arrow is used to denote termination, which is what the utility
> detects.
>
> The algorithm was kind of tricky to work out, but dang,
> it works!

I'm sure history will remember this day, Thu, 1 Apr 2004.


> Look for this utility in the next PLT distribution.
> More information about the program will be available
> in the manual page, plt/man/man1/plt-down.man.

Why did you bury it there?

--
Tom Breton, calm-eyed visionary

Hu, Wei

unread,
Apr 3, 2004, 3:27:26 AM4/3/04
to
So is this an April Joke or not?

Richard C. Cobbe

unread,
Apr 3, 2004, 8:21:14 AM4/3/04
to
"Hu, Wei" <r...@mail.ustc.edu.cn> writes:

> So is this an April Joke or not?

Yes. It's a reference to the Piltdown Man hoax; do a Google search for
details.

Richard

tal...@noshpam.lbl.government

unread,
Apr 4, 2004, 4:38:15 AM4/4/04
to
co...@ccs.neu.edu (Richard C. Cobbe) writes:

> Yes. It's a reference to the Piltdown Man hoax; do a Google search for
> details.

Well, for working around the Halting Problem, I'd like to nominate the
Piltdown Man for the Turing Award. :-)

~Tomer

MJ Ray

unread,
Apr 4, 2004, 5:54:28 PM4/4/04
to
Paul Steckler <st...@ccs.neu.edu> wrote:
> and returns a boolean, as follows. If the S-expression
> input would return a Scheme value in finite time, when supplied

At least in England, All Fools' Day jokes must be played before noon.


Anton van Straaten

unread,
Apr 4, 2004, 6:15:17 PM4/4/04
to
"MJ Ray" <m...@dsl.pipex.com> wrote:

Afaict, it *was* before noon in Paul's timezone...


MJ Ray

unread,
Apr 4, 2004, 7:59:44 PM4/4/04
to
"Anton van Straaten" <an...@appsolutions.com> wrote:
> "MJ Ray" <m...@dsl.pipex.com> wrote:
> > At least in England, All Fools' Day jokes must be played before noon.
> Afaict, it *was* before noon in Paul's timezone...

It certainly isn't now. Usenet is a dumb place to post these.


Johan

unread,
Apr 5, 2004, 1:32:20 AM4/5/04
to
Does anyone have any reference of roundtrip propagation times between
various news servers? Probably excluding alt.*, whcih I gather is
normally serviced at a lower priority.

Morris Carré

unread,
Apr 7, 2004, 9:49:20 AM4/7/04
to
MJ Ray wrote:
>>
>>>At least in England, All Fools' Day jokes must be played before noon.
>>
>>Afaict, it *was* before noon in Paul's timezone...
>
>
> It certainly isn't now. Usenet is a dumb place to post these.
>

What's dumb is to miss that Usenet ain't part of England.

MJ Ray

unread,
Apr 7, 2004, 12:42:48 PM4/7/04
to

It would be, so I assume you do. I sure don't. FUs set.


0 new messages