PLT 4.2 is out.
The interesting thing is that they cut over some 25,000 lines of C++ over to Scheme in the GUI framework.
(via PLT)
HtDP on National Radio
HtDP was mentioned on NPR!
Thanks to David for transcribing:
Thomas, Manhattan Beach, CA – Starting a tech company
Thomas is 10 years old and he wants to start a software company with his friends! He programs in C++, Java, and Python?! Wow. Leo says he wants Thomas to learn these programs right, not just noodling with them and learning bad habits. So Leo says that Alice is a good place to start, but Leo suggests HTDP.ORG. It’s a programming book written by software professors all over the country and teaches “SCHEME,” which is a “flavor” of a programming language called LISP. Download DrScheme. This will teach you to plan, design, and organize your software ideas.
(via PLT)
Is eqv? the portable way of checking object equality?
I asked here: “Is eqv? the portable way of checking object equality?”.
Will explained:
Grant Rettke wrote: > From what I have read, eq? is a way of determing whether two objects > are the same based on whether they point to the same location in > memory; and generally that eqv? works the same way as eq? but for > numbers and characters; numbers and characters equality will not be > determined consistently across different implementations. There are a few other differences as well, but numbers and characters are indeed the most commonly encountered. > Additionally > I have read that as a result of this one ought to use eqv? as a > portable means for checking for object equality unless performance is > such an issue that eq? should be used instead. That's reasonable, modulo the quibble with "object equality" below. > Is eqv? the portable way of checking object equality? Yes to the first half of that sentence, provided you replace "portable" by "most portable standard". As for the second half of the sentence, I have this quibble: In general, there is no such thing as *the* notion of object equality; the appropriate notion of object equality depends upon the context. In particular, it depends on whether you want to compare two objects with respect to mutability (that is, does a side effect to one object imply the same side effect to the other?) or with respect to their current state. In Scheme (whether IEEE/ANSI/R5RS or R6RS), eqv? is the most implementation-independent of the pre-defined equivalence predicates that are defined on all objects and are guaranteed to distinguish two distinct mutable objects. Similarly, equal? is the pre-defined partial equivalence predicate that distinguishes on the basis of current state but not on the basis of mutation; the R6RS equal? is also total. In Scheme, eq? is basically an efficiency hack that can be used as an alternative to eqv? when you know for sure that at least one of the arguments is a boolean, symbol, empty list, pair, procedure, non-empty string, non-empty vector, non-empty bytevector (R6RS only), or record (R6RS only). The rationale for eq? is that it is often about ten times as fast as eqv?, which is enough to matter for some applications, and the specific list of situations for which eq? is guaranteed to behave the same as eqv? is about as inclusive as it can be without sacrificing speed in typical implementations. Will
Basically, eq? is pointer equality.
Agave OpenGL Libraries for R6RS Scheme
Here are some of Eduardos awesome R6RS libraries for working with OpenGL.
Loading Libraries from Beyond the Filesystem
A Walking Back in Time REPL
In this post Eduardo explains a REPL that he implement for Factor that allows you to go back to any point back in time of the REPL. In the thread he is wondering if such a thing is possible in Ikarus Scheme. Either way, it sounds pretty interesting and clearly Eduardo is very talented!
Geiser: A New Emacs-Scheme Interaction Mode
Here is the announcement for a new Emacs-Scheme interaction mode that already works with PLT and Guile, and will probably soon be working with Ikarus, too.
Semantics Engineering with PLT Redex
Semantics Engineering with PLT Redex:
This text is the first comprehensive presentation of reduction semantics in one volume; it also introduces the first reliable and easy-to-use tool set for such forms of semantics. Software engineers have long known that automatic tool support is critical for rapid prototyping and modeling, and this book is addressed to the working semantics engineer (graduate student or professional language designer). The book comes with a prototyping tool suite to develop, explore, test, debug, and publish semantic models of programming languages. With PLT Redex, semanticists can formulate models as grammars and reduction models on their computers with the ease of paper and pencil.
The text first presents a framework for the formulation of language models, focusing on equational calculi and abstract machines, then introduces PLT Redex, a suite of software tools for expressing these models as PLT Redex models. Finally, experts describe a range of models formulated in Redex.
PLT Redex comes with the PLT Scheme implementation, available free at http://www.plt-scheme.org/. Readers can download the software and experiment with Redex as they work their way through the book.
For me this is a long, long, long goal :).
How to Test Functions that are not Exported from a Module
Paulos asked here how to unit test module functions that are not exported. Eli explained two solutions here:
; One way to do this is with `module->namespace' to get the
; namespace of the module (I think that this is how `require/expose'
; works). Another way which is very convenient for testing is to use
; the sandbox:
(require scheme/sandbox)
(define e (make-module-evaluator (string->path "some-file")))
; and at this point you have `e' bound to an evaluator that works
; inside of your module, similarly to the repl in drscheme.
Coyotos and Genode OS
Coyotos and Genode are two operating systems about which I had never heard that were mentioned in an Ikarus Users mailing list thread that doesn’t seem to have been mirrored online.
Coyotos:
Coyotos is a secure, microkernel-based operating system that builds on the ideas and experiences of the EROS project.
Genode:
We understand the complexity of code and policy as the most fundamental security problem shared by modern general-purpose operating systems. Because of high functional demands and dynamic workloads, however, this complexity cannot be avoided. But it can be organized. Genode is a novel OS architecture that is able to master complexity by applying a strict organizational structure to all software components including device drivers, system services, and applications. The Genode OS framework is the effort to advance the Genode OS architecture as a community-driven open-source project.