[Haskell-cafe] Re: Optimizing spelling correction program
Kamil Dworakowski
kamil at dworakowski.name
Mon Jun 22 16:54:49 EDT 2009
On Jun 22, 9:06 pm, Daniel Fischer <daniel.is.fisc... at web.de> wrote:
> Am Montag 22 Juni 2009 21:31:50 schrieb Kamil Dworakowski:
>
>
>
> > On Jun 22, 6:46 am, Bulat Ziganshin <bulat.zigans... at gmail.com> wrote:
> > > Hello Kamil,
>
> > > Monday, June 22, 2009, 12:01:40 AM, you wrote:
> > > > Right... Python uses hashtables while here I have a tree with log n
>
> > > you can try this pure hashtable approach:
>
> > > import Prelude hiding (lookup)
> > > import qualified Data.HashTable
> > > import Data.Array
> > > import qualified Data.List as List
>
> > > data HT a b = HT (a->Int) (Array Int [(a,b)])
>
> > > -- size is the size of array (we implent closed hash)
> > > -- hash is the hash function (a->Int)
> > > -- list is assoclist of items to put in hash
> > > create size hash list = HT hashfunc
> > > (accumArray (flip (:))
> > > []
> > > (0, arrsize-1)
> > > (map (\(a,b) -> (hashfunc a,b))
>
> Typo: should be
>
> map (\(a,b) -> (hashfunc a, (a,b))
Wait! Have you typed that definition into the msg off the top of your
head? :)
I went back to using Strings instead of ByteStrings and with that
hashtable the program finishes in 31.5s! w00t!
More information about the Haskell-Cafe
mailing list