Skip to content

Instantly share code, notes, and snippets.

@leftaroundabout
Last active April 1, 2017 00:07
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save leftaroundabout/096dcbc919ce7f6eafbbcb5f222b069a to your computer and use it in GitHub Desktop.
Save leftaroundabout/096dcbc919ce7f6eafbbcb5f222b069a to your computer and use it in GitHub Desktop.
Bad (exponential!) performance of layer of MaybeT wrappers
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import Control.Monad\n",
"import Control.Monad.Identity\n",
"import Control.Monad.Trans.Maybe\n",
"\n",
"import System.Environment\n",
"\n",
"tryR :: Monad m => ([a] -> MaybeT m [a]) -> ([a] -> m [a])\n",
"tryR f x = do\n",
" m <- runMaybeT (f x)\n",
" case m of\n",
" Just t -> return t\n",
" Nothing -> return x\n",
"\n",
"check :: MonadPlus m => Int -> m Int\n",
"check x = if x `mod` 2 == 0 then return (x `div` 2) else mzero\n",
"\n",
"foo :: MonadPlus m => [Int] -> m [Int]\n",
"foo [] = return []\n",
"foo (x:xs) = liftM2 (:) (check x) (tryR foo xs)\n",
"\n",
"\n",
"runFoo :: [Int] -> [Int]\n",
"runFoo x = runIdentity $ tryR foo x"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import Data.Time\n",
"bogoBench :: [a] -> IO NominalDiffTime\n",
"bogoBench x = do\n",
" t₀<-getCurrentTime\n",
" last (reverse x) `seq` (fmap (`diffUTCTime`t₀) getCurrentTime)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": []
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"{-# LANGUAGE TupleSections #-}\n",
"timings <- mapM (\\n -> (n,) <$> bogoBench (runFoo [2,4..n])) [2,4 .. 50]"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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"
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import Graphics.Rendering.Chart.Easy\n",
"toRenderable . plot\n",
" $ line \"t\" [[(fromIntegral n, realToFrac t) :: (Double, LogValue) | (n,t) <- timings]]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Haskell",
"language": "haskell",
"name": "haskell"
},
"language_info": {
"codemirror_mode": "ihaskell",
"file_extension": ".hs",
"name": "haskell",
"version": "7.10.2"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment