Skip to content

Instantly share code, notes, and snippets.

HeinrichApfelmus / 01_ExampleMonadic.hs
Last active Oct 11, 2018
Chart library examples — monadic vs pure API
View 01_ExampleMonadic.hs
plotSpectrum1 lattice n m = toFile def file $ do
layout_title .= "Spectrum of '" ++ name ++ "'"
layout_x_axis . laxis_title .= "momentum k (" ++ show m ++ " points)"
layout_y_axis . laxis_title .= "energy E"
setColors $ colorGradient blue (length rows)
forM_ rows $ \row -> plot (line "band" [row])
HeinrichApfelmus / ipython.log
Created Jan 20, 2014
Log of a failed installation of IPython when running `IHaskell notebook`.
View ipython.log
/Users/apfelmus/.ihaskell/ipython/bin/pip run on Sun Jan 19 23:56:41 2014
Obtaining ipython from git+
Cloning (to 9c922f54af799704f4000aeee94ec7c74cada194) to /Users/apfelmus/.ihaskell/ipython/src/ipython
Found command 'git' at '/opt/local/bin/git'
Running command /opt/local/bin/git clone -q /Users/apfelmus/.ihaskell/ipython/src/ipython
Running command /opt/local/bin/git submodule update --init --recursive -q
Running command /opt/local/bin/git tag -l
HeinrichApfelmus / DynamicEventSwitching.hs
Created Oct 2, 2013
Create new behaviors and switch between them.
View DynamicEventSwitching.hs
{-# LANGUAGE Rank2Types #-}
{-# LANGUAGE ScopedTypeVariables #-}
import Data.Traversable (sequenceA)
import Reactive.Banana
import Reactive.Banana.Frameworks
newtype Wrapper = Wrapper (forall t. Moment t (Event t () -> Behavior t Integer))
main :: IO ()
View InputElement.hs
{-# LANGUAGE RecordWildCards #-}
import Data.Monoid
import Control.Monad
import qualified Graphics.UI.Threepenny as UI
import Graphics.UI.Threepenny
data Input = Input
HeinrichApfelmus / SnapDebugLogChrome
Last active Dec 17, 2015
Web servers fail to serve large files on MacOS X.
View SnapDebugLogChrome
-- debug log for querying http://localhost:100000/video.mp4 with Chrome
Listening on
Can't open log file "log/access.log".
Exception: log/access.log: openFile: does not exist (No such file or directory)
Logging to stderr instead. **THIS IS BAD, YOU OUGHT TO FIX THIS**
Can't open log file "log/error.log".
Exception: log/error.log: openFile: does not exist (No such file or directory)
HeinrichApfelmus / RandomAccessParser.hs
Last active Mar 21, 2020
Parsing a random-access format into a pure data structure. Parsing will be lazy: parts of the data structure will be parsed on demand.
View RandomAccessParser.hs
import Data.Word
import qualified Data.ByteString as B
type ByteString = B.ByteString
data Tree = Leaf [Word8] | Branch Tree Tree deriving (Eq,Show)
parse :: ByteString -> Tree
parse xs = case view xs of
Cons 0 xs -> case view xs of
Cons length xs -> Leaf . B.unpack $ B.take (fromIntegral . toInteger $ length) xs
HeinrichApfelmus / CurrencyConverter.js
Created Oct 19, 2012
Program compiled with haste that fails with a JavaScript error
View CurrencyConverter.js
/* Eval
Evaluate the given thunk t into head normal form.
If the "thunk" we get isn't actually a thunk, just return it.
function E(t) {
if(t instanceof Thunk) {
if(t.f) {
t.x = t.f();
t.f = 0;
HeinrichApfelmus / gist:3845711
Created Oct 6, 2012
Log for haste-boot (2012-10-06)
View gist:3845711
peach:~ apfelmus$ haste-boot
Downloading base libs from
Reading package info from stdin ... done.
Reading package info from stdin ... done.
Reading package info from stdin ... done.
Reading package info from stdin ... done.
Attempting to clone/update: git://
Cloning into fursuit...
remote: Counting objects: 134, done.
remote: Compressing objects: 100% (74/74), done.
HeinrichApfelmus / GameLoop.hs
Created Oct 2, 2012
Game loop in reactive-banana
View GameLoop.hs
Implementation of an "industry strength" game loop with fixed time step
and variable fps.
See also
{-# LANGUAGE NoMonomorphismRestriction #-}
module Main where
HeinrichApfelmus / Form.html
Created Jul 19, 2012
Problem with 'POST' ajax request and Scotty-0.4.4
View Form.html
<script type="text/javascript" src="" /></script>
<script type="text/javascript" charset="utf-8">
// onLoad Handler
$(function () {
$('#form').submit( function() {
$.post('/submit', { x : $('#x').val() }, function (result) {