[racket] Program works OK in DrRacket, not as an executable

From: Jussi Salmela (mimmottos at gmail.com)
Date: Sun Jul 15 14:19:46 EDT 2012

Versions: Win 7 & Racket

I have a program starting like this:

#lang racket/gui

(require 2htdp/batch-io)
(require racket/mpair)
(require srfi/13)

;;; Jussi Salmela, http://www.saunalahti.fi/jussalme
;;; This program produces graphs for blood pressure monitor (==> bpm)
;;;  data. The data (in CSV format) has been downloaded from a
;;; blood pressure measurement device, model OMRON M10-IT.

It reads a CSV formatted file containing diastolic and systolic BP values
amongst other data. It creates a GUI window drawing a chart of the d/s
value lines for
every date/line. When a button is clicked in the window the program creates
a PDF file and shows it in Adobe Reader using shell-execute.

Everything fine and dandy when run in DrRacket but not when I create
an executable. I create the executable with the middle selection ie.
 "a standalone exe for this computer". When I run the resulting exe I get:

standard-module-name-resolver: collection not found
  collection: "lang/private"
  in collection directories:
   #%embedded:g10080:htdp-beginner: [traversing imports]
   #%embedded:g10047:prim: [traversing imports]
   #%embedded:g9942:batch-io: [traversing imports]
   bpm-graph-printer: [traversing imports]

[Exited. Close box or Ctrl-C closes the console.]

What follows reminds me of my teaching assistant times looong ago:
people came to see me with their card decks and program listings
claiming that they had not changed anything, the program just had
mysteriously stopped working!

When subjected to the third degree they admitted to having edited a line or two
and changing the order of a few lines but insisted that surely that can't be
the cause of the changed behavior.

But I am going to stick to my claim: this used to work earlier and
I have not changed anything. What this means is that I created an
exe in February of 2011 and used it successfully in March, September,
and March 2012 again.

I don't remember what version of Racket I used and I don't have
it on my computer any more, so I get an error of a missing DLL when
I try to start the old exe.

I use the read-lines function from batch-io and this trouble
obviously has something to do with that.

Either my program is incorrect and DrRacket is  too kind in not turning me down
when running it or there's something funny going on in the exe creation.


Posted on the users mailing list.