Skip to content

Instantly share code, notes, and snippets.

@softmechanics
softmechanics / enumerator_to_lazy_bytestring.hs
Created February 21, 2011 21:11
Convert a strict ByteString Enumerator to a lazy ByteString
{-# LANGUAGE PackageImports #-}
module Network.Wai.Util where
import Control.Concurrent
import Control.Concurrent.MVar
import Control.Exception (finally)
import "mtl" Control.Monad.Trans
import qualified Data.ByteString as B
import qualified Data.ByteString.Char8 as B8
import qualified Data.ByteString.Lazy as L
import qualified Data.IORef as I
import qualified Control.Exception as E
import Control.Concurrent
import Control.Exception
import Control.Monad
import Network.Socket
main :: IO ()
main = do
mgr <- initialize 1
@softmechanics
softmechanics / timeout_deadlock.hs
Created February 8, 2011 22:10
Illustrate Deadlock with Michael's Timeout module
import Control.Concurrent
import Control.Exception
import Control.Monad
import Network.Socket
import Timeout
main = do
mgr <- initialize 1
forever $ do
threadDelay 10
import Control.Concurrent
import Control.Exception
import Control.Monad
import Network.Socket
main = forever $ do
pair <- try $ socketPair AF_UNIX Stream defaultProtocol
case pair of
Left e -> do
let _ = e :: SomeException
@softmechanics
softmechanics / timepicker.html
Created January 20, 2011 19:23
jquery-ui-timepicker-addon test
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title></title>
<script src="http://trentrichardson.com/examples/timepicker/js/jquery-1.4.4.min.js"
type="text/javascript">
</script>
<script src=
"http://trentrichardson.com/examples/timepicker/js/jquery-ui-1.8.6.custom.min.js"
{-# LANGUAGE QuasiQuotes
, TemplateHaskell
, OverloadedStrings
, TypeFamilies
#-}
import Yesod
import Yesod.Form
import Yesod.Form.Jquery
import Control.Applicative
@softmechanics
softmechanics / fileFieldTest.hs
Created January 3, 2011 02:13
Example of Yesod's fileField
{-# LANGUAGE QuasiQuotes
, OverloadedStrings
, TypeFamilies
#-}
import Yesod
import Control.Applicative
data Test = Test
@softmechanics
softmechanics / formMonadWithoutSignature.hs
Created December 26, 2010 08:23
Yesod: Using GFormMonad without a type signature
{-# LANGUAGE QuasiQuotes, OverloadedStrings, TemplateHaskell, TypeFamilies #-}
import Control.Applicative
import Yesod
import Yesod.Form.Core
data CommentForm = CommentForm
{ user :: String
, comment :: Textarea
, isHtml :: Bool
}
{-# LANGUAGE FlexibleInstances
, FlexibleContexts
, MultiParamTypeClasses
, TypeSynonymInstances
, FunctionalDependencies
, UndecidableInstances
#-}
module CombineForm where
import Yesod
@softmechanics
softmechanics / directingTI.hs
Created December 1, 2010 20:37
Directing type inference with equality constraints and multi parameter type classes
{-# LANGUAGE MultiParamTypeClasses
, FlexibleInstances
, TypeFamilies
#-}
class Add a b where
add :: a -> b -> a
instance Num a => Add a a where
add = (+)