The spelling-suggest package

[ Tags: bsd3, console, library, program, text ] [ Propose Tags ]

Given a possibly-misspelled word, this tool spits out one or more properly-spelled words in order of likelihood of similarity.

This functionality is exported as a library via Text.SpellingSuggest (suggest) and as a command-line program "thimk" (an old joke)

Running the program "thimk-makedb" is an optional (but highly recommended) step to speed up lookups, permitting reasonable performance on enormous dictionaries by creating a precompiled SQlite database of phonetic codes for a dictionary.

[Skip to Readme]


Versions 0.5.0,, 0.5.1,,,
Dependencies base (>=4.2 && <5), edit-distance (==0.2.*), parseargs (>=0.1.1 && <0.2), phonetic-code (==0.1.*), sqlite (>=0.5.1 && <0.6) [details]
License BSD3
Copyright Copyright © 2010 Bart Massey and Greg Weber
Author Bart Massey and Greg Weber
Category Console, Text
Home page
Source repository head: git clone git://
this: git clone git:// v0.5.2.1)
Uploaded Mon Aug 27 05:14:28 UTC 2012 by BartonMassey
Distributions NixOS:
Executables thimk-makedb, thimk
Downloads 1308 total (15 in the last 30 days)
Rating 0.0 (0 ratings) [clear rating]
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]
Hackage Matrix CI





Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainer's Corner

For package maintainers and hackage trustees

Readme for spelling-suggest-

[back to package description]

Thimk and spelling-suggest

Spelling word suggestion tool and library
Copyright © 2010 Bart Massey and Greg Weber

This software is licensed under the "3-clause ('new') BSD License". Please see the file COPYING provided with this distribution for license terms.

This package is a newer version of the original package called "thimk".

"thimk" (an old joke) is a command-line spelling word suggestion tool. You give it a possibly-misspelled word, and it spits out one or more properly-spelled words in order of likelihood of similarity.

Thimk is structured as a command-line interface to its spelling-suggest library, originally split out by Greg Weber. You can use this library for other applications also. There is sufficient Haddock to work out how to use it. It is packaged on Hackage as spelling-suggest.

There is little documentation of the thimk command as-of yet, but the usage message from the program should tell everything needed to get started with it.

The idea and name for thimk came from an old program that used to hang around Reed College, probably written by Graham Ross and now apparently lost in the mists of time. See this Usenet post for the one very vague reference I've found on the web (in the SEE ALSO section of the referenced manpage). I originally re-implemented thimk in Nickle some years ago, but that implementation has been slow, clunky, and non-portable.

The current implementation is a bit more sophisticated than I recall the original being. By default it uses a prefilter that discards words with large edit distances from the target, then filters words with a different phonetic code than the target, then presents the top result sorted by edit distance.

The Soundex and Phonix phonetic codes are designed for names, but seem to work about the same with other words. I follow the common practice of not truncating the codes for greater precision, although Phonix does truncate its final "sound" for greater recall.

The latest change to the implementation is an addition of an optional precompiled SQlite database of phonetic codes for the entire dictionary, created with "thimk-makedb". This greatly speeds lookup, permitting reasonable performance on enormous dictionaries.

Building thimk and spelling-suggest requires my parseargs and phonetic-code packages from hackage, as well as edit-distance and sqlite-0.5.1 or newer if you want to build and use the optional phonetic codes database. It is probably easiest to build using cabal-install, which should take care of most everything for you.

--Bart Massey 2012-08-26