Closest statically typed FP "cousin" to Scheme?

Most of the folks with whom I’ve talked about Functional Programming seem to be very skilled in both dynamically and statically typed languages. I’ve learned only Scheme well. Wondering what should come next, I posted to comp.lang.scheme asking about what is a good statically typed Functional Programming language to learn after Scheme. Anton’s reply piqued my interest. Here are the relevant bits:

If you want to learn a more traditional typed functional language, and keep additional learning to a minimum, then SML might make sense both because it’s relatively close to Scheme in its semantics, and because it’s “small” for a typed functional language. It’ll teach you the essentials of typed functional programming.

“It’ll teach you the essentials of typed functional programming”, perfect!

On the other hand, if you’re looking to stretch your brain, Haskell is worth learning. Some might argue that you haven’t really done functional programming unless you’ve done pure functional programming. The combination of purity, lazy evaluation, and a highly advanced type system (particularly in the main Haskell implementation, GHC), makes for a programming style significantly different from that of the (relatively) impure, strict languages like SML, OCaml, and Scheme.

“On the other hand, if you’re looking to stretch your brain”, mmmmm… brain-stretching :).
Addendum: 10/12/08
I got a lot of great feedback on this post from a very diverse bunch of people. It looks like the best place for me to start is with SML and the move on to either OCaml, Haskell, or F#. ML for the Working Programmer was consistently recommended as the best book on SML.
While I haven’t got an urgent schedule for this course of study, I am happy to have a reasonable path to follow when I do pursue it!
Addendum: 12/07/08
Via this post:

* ML – ML is one of the favourite languages used by computer scientists. I suggest learning algebraic data types (sum types and product types) then to move on quickly to Haskell.
* Haskell – I find Haskell makes the most sense only after knowing Scheme and ML. Go crazy with pattern matching, but avoid using monads unless absolutely neccessary because they are cheating! You will be sorely tempted to resort to using them all over the place.

Additional advice to start with ML and then move to Haskell.

Pocket Scheme

Pocket Scheme gives your PDA a standalone programming capability in Scheme, a dialect of Lisp with exceptionally clear and simple semantics. It supports file creation and manipulation, arithmetic operations of unlimited precision, the complete Unicode character set, data sharing via the Windows clipboard, regular expression matching on character strings, simple TCP client and server networking, scripts written in Scheme, and even direct system calls to the Win32 API.

Snow aka Scheme Now

Scheme Now!, also know as Snow, is a repository of Scheme packages that are portable to several popular implementations of Scheme.

Snow is a general framework for developing and distributing portable Scheme packages. Snow comes with a set of core packages that provide portable APIs for practical programming features such as networking, cryptography, data compression, file system access, etc. Snow packages can export procedures, macros and records.

BDC Scheme

BDC Scheme

A Scheme interpretter written in Java that uses some compiler-style optimizations for better performance than straightforward interpretters. Originally started in 1996 as a project to learn Java programming, BDC Scheme was used as an extension language in a commercial product starting in 1997. Previous to open source release in 2002 it was written up as part of an a MIT MEng thesis in 2000 where it was referred to as Script. The thesis covers the history of the implementation and benchmarks the performance relative to a variety of other Scheme implementations, both Java and non-Java based such as Kawa, Silk, Skij, Scheme 48, MIT Scheme. Both Sun and IBM Java virtual machines are used in the comparison.

CGI scripting with MzScheme

Here is a post on using mzscheme for CGI.
For safe keeping, here is the code:

#!mzscheme -mqf
(define *query-string* (getenv "QUERY_STRING"))
(define (header type)
  (string-append "Content-type: " type "; charset=iso-8859-1~n~n"))
(printf (header "text/html"))
(printf "Hello World~n")
(when *query-string*
      (printf "[~a]~n" *query-string*))
(exit)

A Visual Interpreter for Students Learning Scheme

Students who know procedural and object-oriented languages frequently have difficulty learning the functional paradigm. The purpose of this work is to facilitate this transition by designing and implementing a set of visual tools that help students understand how Scheme, a functional language, programs work. To achieve our goals we worked on the implementation of a Scheme interpreter and a set of visual tools for different key aspects of functional programming languages. Pilo Visualization Tools for Scheme (PVTS) emphasizes on the functional programming language paradigm and its visual representations. PVTS can be used by teachers as a teaching tool as well as by students as a learning tool.

HOP Web Framework

HOP is a new Software Development Kit for the Web 2.0. It relies a new higher-order language for programming interactive web applications such as multimedia applications (web galleries, music players, …), office applications (web agendas, mail clients, …), ubiquitous domotics, etc. HOP can be viewed as a replacement for traditional graphical toolkits. HOP is implemented as a Web broker, i.e., a Web server that may act indifferently as a regular Web server or Web proxy.

(via comp.lang.scheme)