Standard ML

Join the Standard ML Track
Standard ML is a functional programming language with type inference and some side-effects.
Join the Standard ML Track
Track mentors

1 Mentor

Our mentors are friendly, experienced Standard ML developers who will help teach you new techniques and tricks.
Track students

140 Students

Join the many students who have enjoyed learning and improving their skills by taking this track.
Track exercises

27 Exercises

Hundreds of hours have gone into making these exercises fun, useful, and challenging to help you enjoy learning.

About Standard ML

fun fib 0 = 0
  | fib 1 = 1
  | fib n = fib (n - 1) + fib (n - 2)

Standard ML (SML) is one of the two main dialects of the ML programming language. ML was the first strong statically typed language, developed in the early 1970s at the University of Edinburgh.

Despite its age, SML feels very young in many ways; SML had features that mainstream languages would not pick up for decades and are still being experimented with today.

Here are some of ML's "cutting-edge" features:

SML was originally designed for developping proofs about first-order predicate calculus (read: computer programs) and it can have a distinct academic feel about it.

However, its emphasis on immutability and strong typing has led SML to be used in many fields where program correctness is paramount (compiler design, code analysis, financial systems, medical systems, etc...).

Learning SML makes you a better programmer, because it forces you to write code that is stateless and to use closures effectively.

It's also many programmers first introduction to pattern matching and (truely) strong typing. And because SML's type system is so strong and well-thought out, it often feels like you are working in a dynamically typed language instead.

There are several popular implementations:

You can find information on the language on each implementation's sites.

Join the Standard ML track

A tremendous learning opportunity to explore the depth of your own knowledge

Exercism is fantastic in learning new languages but that is not the extent of it. If you are a "more experienced" programmer you may have encountered impostor syndrome: the idea you don't really know what you think you know. Exercism lets you solve problems and put them in the space of open feedback which is a tremendous learning opportunity to explore the depth of your own knowledge. Even if you have been programming in a language for awhile it is worth checking into Exercism to see where you stand with current implementation practices.

Relaxed. Encouraging. Supportive.

Meet the Standard ML Track mentors

Once you join the Standard ML language track, you will receive support and feedback from our team of mentors. Here are the bios of a few of the mentors of this track.

Avatar of Simon Shine

Simon Shine https://simonshine.dk

I've been a classroom teacher in compilers and various functional languages for five years. Having pure functions and isolation of side-effects are fundamental to separation of concerns. Strong, static types, type inference and algebraic types are hard for me to live without.
Fun. Challenging. Interesting

Community-sourced Standard ML exercises

These are a few of the 27 exercises on the Standard ML track. You can see all the exercises here.

Roman Numerals
easy
misc
Bracket Push
medium
stacks
Nth Prime
easy
math
Difference Of Squares
easy
math
Space Age
easy
floats
Diamond
easy
lists
strings
text formatting
Passionate. Knowledgeable. Creative.

Meet the Standard ML Track maintainers

The Standard ML Maintainers are the brains behind the Standard ML Track. They spend their spare time creating interesting and challenging exercises that we can all learn from. We are incredibly grateful for their hard work. Here are the bios of a few of the maintainers of this track.

Avatar of Simon Shine

Simon Shine https://simonshine.dk

I've been a classroom teacher in compilers and various functional languages for five years. Having pure functions and isolation of side-effects are fundamental to separation of concerns. Strong, static types, type inference and algebraic types are hard for me to live without.

Get started with the Standard ML track. As with everything on Exercism, it's 100% free!

Join the Standard ML Track