Getting started with Chez Scheme and Emacs on Ubuntu

I’ve been an enthusiastic Mac user for about 12 years, but hardware problems with a recent MacBook Pro and friction surrounding the Catalina upgrade pushed me to evaluate other Unix-like systems. I pulled out an old ASUS laptop that originally had Windows 7(?) installed, but was most recently running CloudReady. I first tried installing FreeBSD because it seemed like an intriguing alternative, but the installation failed on the old hardware.

Adding string matching to chez-docs

I recently wrote a little library, chez-docs, to make accessing documentation easier while learning Chez Scheme (blog post). The main procedure, doc, in chez-docs only returns results for exact matches with proc.1 To aid in discovery, I’ve added a procedure, find-proc, that provides exact and approximate matching of search strings. Levenshtein Distance My initial thought was that I should approach this problem with approximate string matching. After a little searching, I learned that Levenshtein distance was one of the simplest approaches to calculate the distance between two strings.

Access Chez Scheme documentation from the REPL

In the process of learning Chez Scheme, I’ve missed R’s ability to quickly pull up documentation from the console via help or ?. I’ve toyed with the idea of trying to format the contents of the Chez Scheme User’s Guide for display in the REPL (similar to Clojure Docs). But that is probably too big of a task for me at this point. It recently occurred to me, though, that I can write a simple library, chez-docs, with only one procedure, doc, that will make it a bit easier to access the Chez Scheme User’s Guide.

chez-stats is now available through Raven

My little statistics library, chez-stats, is now available for installation through Raven, a package manager for Chez Scheme. Raven aims to provide an easy-to-use tool for local package management. Raven’s installation instructions are straightforward. However, on macOS Catalina, I had to use sudo when making a copy of the Chez Scheme compiler, i.e., sudo cp chez scheme. If you are getting permission errors with curl -L | scheme, then try curl -o install.

Reading and writing CSV files in Chez Scheme

I have added functionality for reading and writing CVS files to my Chez Scheme library, chez-stats. In a previous post, I compared reading CSV files in R and Racket and made the following observation. By and large, R users are not programmers but end users who want to expeditiously perform tasks related to cleaning, analyzing, and visualizing their data. There is a large, and growing, industry around building R packages and tools that facilitate those end users.

Writing a Chez Scheme library

Recently, I switched from learning Racket to Chez Scheme. I wanted to try to repeat some of my previous Racket exercises in Chez Scheme, but quickly ran into a barrier when my first choice required drawing random variates from a normal distribution. I looked for existing Chez Scheme libraries but came up empty. I considered SRFI 27: Sources of Random Bits, which includes example code for generating random numbers from a normal distribution, and reached out for guidance.

Getting started with Chez Scheme and Emacs on macOS and Windows

I recently decided to switch my attention from learning Racket to Chez Scheme. One of the reasons that I chose Racket was because of how easy it is to get up and running. Setting up a development environment for Chez requires jumping through a few more hoops. In this post, I document those hoops. Disclaimer: The suggestions in this post may not represent best practice. I will update the post as I become more experienced with Chez and Emacs.

Exploring Scheme implementations

Over the last 6 months, I have been learning Racket in my free time. One of my first posts on this blog laid out my reasons for choosing Racket. The relatively low barrier to entry (e.g., easy installation of Racket and packages, DrRacket IDE, good docs, etc.) allowed me to build momentum with Racket and I was feeling satisfied with my choice of Racket as an alternative to Python.