Not having ridden for 12 years or so, I thought it would be good to get back in the saddle again with some off-street street-time and re-learning of good safety habits already under my belt. Luckily for me a slot opened up in Motorcycling Enterprises’ Safe Rider Course. It was a lot of fun.
The teachers provided excellent in-classroom and on-the-track training; balancing good exercises with 1-on-1 attention that made a big difference in how quickly you acquired the skill(s).
Unfortunately for others I’m sad to see that they are retiring this year. While there are plenty of MSF certified classes out there, I’m still hoping that their trainers decide to take over their business.
Manga Guide to Lisp
R6RS macros with positional and optional arguments
[Makers] is a distribution of libraries for R6RS Scheme implementations. In the paper:
“Keyword and Optional Arguments in PLT Scheme“. Matthew Flatt and Eli Barzilay. 2009 Workshop on Scheme and Functional Programming.
the authors discuss ways to provide functions and macros with a mix of fixed and optional arguments to better organise abstractions. This package humbly proposes an alternative for R6RS implementations, without the use of “keywords” as disjoint type of values.
(via comp.lang.scheme)
Caml Trading talk at CMU
Here is an old but good presentation about Janestreet, with a discussion of why OCaml fits in the company.
When asked how they deal with the inevitable difficulty in hiring OCaml programmers, Yaron replied something to the effect that:
If you don’t hire bad programmers, many things become easier.
Setting the background color in Slideshow
The OP asked how to set the background color in Slideshow as it is not obvious.
Matthew replied:
Locally, I’d superimpose a picture onto a color rectangle:
#lang slideshow
(define (add-bg p color)
(refocus (cc-superimpose
(colorize
(filled-rectangle (pict-width p)
(pict-height p))
color)
p)
p))
(add-bg (bt "Hello") "green")
To globally set the background, I’d use that in an assembler:
#lang slideshow
(define (add-bg p color)
(refocus (cc-superimpose
(colorize
(filled-rectangle (pict-width p)
(pict-height p))
color)
p)
p))
(current-slide-assembler
(let ([orig (current-slide-assembler)])
(lambda (title sep body)
(ct-superimpose
(inset (add-bg (inset full-page margin) "green")
(- margin))
(orig title sep body)))))
(slide #:title "Example" (bt "Hello"))
(via plt)
How to evaluate expressions and produce no output in Scribble
The OP asked:
Is there a way to evaluate something in a given evaluator without having anything displayed in the output?
Ie. I want to feed a couple of basic function definitions into the evaluator instance that I obtain with (make-base-eval).
Matthew shared the solution: interaction-eval.
(via plt)
Incremental definition and evaluation of examples in Scribble
The scribble/eval library provides utilities for evaluating code at document-build time and incorporating the results in the document, especially to show example uses of defined procedures and syntax.
Here is an example where the OP was:
trying to figure out a way to insert some text in between Scheme definitions: that is, have some definitions (@schemeblock or equivalent), with their explanations (text mode), and then an interaction, like @interaction, except that it should be aware of the preceeding definitions.
Here is the solution:
#lang scribble/manual
@(require scribble/eval)
@(define ex-eval (make-base-eval))
First, we define @scheme[x]:
@interaction[
#:eval ex-eval
(define x 1)
]
Next, we use it:
@interaction[
#:eval ex-eval
x
]
@(close-eval ex-eval)
(via plt)
Highlighting code in Scribble
You can use ‘code:hilite’ to highlight expressions in Scribble generated documentation like this:
@schemeblock[
(+ 1 (code:hilite +inf.0))
]
It doesn’t work for multi-line expressions yet, however.
(via plt)
