From: Nicolas Neuss on
Eli Barzilay <eli(a)barzilay.org> writes:

>> Anyway, I wouldn't mind having a PLT module "common-lisp"
>> available:-)
>
> There's Swindle, which provides most of CLOS in a little more
> scheme-ly way, and there's the Modular ACL2 work which is an attempt
> to combine CL's double namespace with PLT's module (and hygienic
> macros). But neither of these is really a CL language...

Yes, actually these are the things (together with Typed Scheme) which
especially caught my attention. My ideal of a programming language
would contain a (universally used) CLOS-like OO, it would allow
(optional) type declarations (integrated with CLOS, of course),
compilation to fast code, hygienic macros, and (if possible) try to
prove code to be correct in the ACL way.

Since PLT Scheme seems to be headed in exactly this direction, I could
imagine that there will be a point when it becomes very easy to add to
such a strong language also a Common Lisp compatibility module which
would make the conversion of existing CL code straightforward.

Nicolas
From: roland.kaufmann on

>>>>> "Ray" == Raymond Toy <toy.raymond(a)gmail.com> writes:

> On 3/16/10 5:59 PM, Hugh Aguilar wrote:
>> LC53 is just a toy program; nobody who knows anything about encryption
>> would use the linear-congruential system. I did think of one use for
>> LC53 though. This would be a text-editor that is designed specifically
>> for women to write their diaries, and in which they use LC53
>> encryption to prevent their boyfriends from reading the text. Assuming
>> that no women are computer programmers (true as far as I know), they
>> will never find out how easy it is to crack the LC53. I may write this

> Oh, come on! Of course there are computer programmers who are women. I
> know some myself. And just because they're not programmers doesn't mean
> they wouldn't be able to crack LC53. There are quite a few women
> mathematicians too.

For example, Joan Boyar who wrote

Inferring Sequences Produced by Pseudo-Random Number Generators,
Journal of the ACM vol. 36, January 1989, pp.129-141.
http://portal.acm.org/citation.cfm?id=59305

This paper presents efficient algorithms for inferring sequences
produced by single variant linear congruential generators. Access is
assumed to all elements of the sequence prior to the element being
predicted. Using the general method presented in the paper, the
author proves all linear congruential generators of a specific form
insecure. The author's method of inference uses a recurrence that
relies on being able to compute integer functions of previous PRNG
output in polynomial time. This is one the original discoveries of
algorithms with the ability to infer linear congruential
generators. This paper assumes a very strong mathematics background,
including: Linear Algebra, Abstract Algebra, and High-Level
Statistics.


Roland
From: Eli Barzilay on
Nicolas Neuss <lastname(a)kit.edu> writes:

> Yes, actually these are the things (together with Typed Scheme)
> which especially caught my attention. My ideal of a programming
> language would contain a (universally used) CLOS-like OO, it would
> allow (optional) type declarations (integrated with CLOS, of
> course), compilation to fast code, hygienic macros, and (if
> possible) try to prove code to be correct in the ACL way.

Heh, that's a long list of things to work on... FWIW,

* Typed scheme will probably talk to the compiler to generate faster
code at some point in the future, but it's unknown when that will
happen;

* The object system that is usually used in PLT (eg, for representing
GUI objects) is not swindle, so they're two separate systems
(swindle might be able to treat the plt object system as its own
objects as it does structs (which is similar to how they're done in
CLOS), but that requires someone to do the gluing work);

* Typed scheme requires declarations, because unlike the types-as-
suggestions that you see in CL it does actually typecheck the code.
But it is a type system that is aimed at idiomatic Scheme code,
which means that it's quite different from ML/Haskell/etc -- the
main difference is that it has subtypes, and also that it has an
`Any' type.

* As for a prover -- the dracula package
(http://www.ccs.neu.edu/home/cce/acl2/) is working with ACL2, but
there's no theorem prover in plt (yet...).


> Since PLT Scheme seems to be headed in exactly this direction, I
> could imagine that there will be a point when it becomes very easy
> to add to such a strong language also a Common Lisp compatibility
> module which would make the conversion of existing CL code
> straightforward.

Yes, my guess is that this wouldn't be hard for various levels of
compatibility and tradeoffs. It's just that nobody had a sufficiently
strong itch so far.

--
((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay:
http://barzilay.org/ Maze is Life!
From: Eli Barzilay on
Nicolas Neuss <lastname(a)kit.edu> writes:
>
> OK, so we have 33 seconds on your machine for mzscheme versus 22
> seconds for SBCL. IMO, this is a very reasonable result considering
> that it was obtained without any type declarations.
>
> Eli, do you maybe know if this result carries over to low-level code
> involving uniform arrays of floating point numbers (e.g. for
> something like my usual floating-point performance test which I
> append below)?

I don't have much experience with FP-intensive code, but in the last
few releases there were a number of FP-oriented improvements -- there
are fp-specific operations and the compiler is smarter with them (to
the point of using unboxed FP values), there are also fp vectors that
are similarly optimized, and there are also unsafe fp operations if
speed is that important. For more details it's probably a good idea
to grep the mailing list or ask there...

--
((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay:
http://barzilay.org/ Maze is Life!
From: Tamas K Papp on
On Wed, 17 Mar 2010 13:33:35 +0100, Nicolas Neuss wrote:

> Eli Barzilay <eli(a)barzilay.org> writes:
>
>>> Anyway, I wouldn't mind having a PLT module "common-lisp" available:-)
>>
>> There's Swindle, which provides most of CLOS in a little more scheme-ly
>> way, and there's the Modular ACL2 work which is an attempt to combine
>> CL's double namespace with PLT's module (and hygienic macros). But
>> neither of these is really a CL language...
>
> Yes, actually these are the things (together with Typed Scheme) which
> especially caught my attention. My ideal of a programming language
> would contain a (universally used) CLOS-like OO, it would allow
> (optional) type declarations (integrated with CLOS, of course),
> compilation to fast code, hygienic macros, and (if possible) try to
> prove code to be correct in the ACL way.
>
> Since PLT Scheme seems to be headed in exactly this direction, I could
> imagine that there will be a point when it becomes very easy to add to
> such a strong language also a Common Lisp compatibility module which
> would make the conversion of existing CL code straightforward.

I experimented very little with it, but Qi II also looks very
promising for type checking and fast compiled code.

Tamas