Skip to content

Instantly share code, notes, and snippets.

@orclev
orclev / trie.hs
Created February 28, 2012 04:23
Haskell trie implementation
import Data.Maybe
import Control.Monad (liftM)
import Data.List (isPrefixOf)
import qualified Data.Map as M
import qualified Data.Foldable as F
-- | Trie container data type
data Trie a = Trie { value :: Maybe a
, children :: M.Map Char (Trie a) }
deriving (Show)
@orclev
orclev / 14.hs
Created February 16, 2012 02:27
Euler problem 14
import Data.List
collatz :: Int -> Int
collatz 1 = 0
collatz n
| odd n = force $ (collatz $! 3*n+1) + 1
| even n = force $ (collatz $! div n 2) + 1
force x = x `seq` x