Tag: Programming Language
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)
Creating Languages with PLT Scheme
memcached for Racket (aka PLT Scheme)
Current line number in PLT Scheme
Here is how to get the current line number programmatically in PLT Scheme (via Jay):
#lang scheme
(define-syntax (current-line-number stx)
(quasisyntax/loc stx
'#,(syntax-line stx)))
(printf "~a: ~a~n" (current-line-number) 6)
(printf "~a: ~a~n" (current-line-number) 8)
(via plt)
Scheme lectures
There is a good list of Scheme related lectures here.