Skip to content

Instantly share code, notes, and snippets.

@sacundim
sacundim / gist:5544704
Last active December 17, 2015 03:39
SeerT monad transformer, written with Reader and Writer.
{-# LANGUAGE GeneralizedNewtypeDeriving, DoRec #-}
module Control.Monad.Trans.Seer
( SeerT
, runSeerT -- :: MonadFix m => SeerT w m a -> m (a, w)
, evalSeerT -- :: MonadFix m => SeerT w m a -> m a
, execSeerT -- :: MonadFix m => SeerT w m a -> m w
, send -- :: (Monoid w, Monad m) => w -> SeerT w m ()
, see -- :: (Monoid w, Monad m) => SeerT w m w
@sacundim
sacundim / SeerA.hs
Last active December 17, 2015 03:49
Applicative version of Seer monad. See this for context:http://unknownparallel.wordpress.com/2013/05/07/two-implementations-of-seers/
{-# LANGUAGE GeneralizedNewtypeDeriving, FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses, FunctionalDependencies #-}
module SeerA (SeerA, runSeerA, see, send, contact) where
import Control.Applicative
import Data.Functor.Constant
import Data.Functor.Product
import Data.Monoid (Monoid, mempty, (<>), Sum(..))
import Data.Traversable
@sacundim
sacundim / TakeR.hs
Last active December 19, 2015 16:59
Benchmarking Data.Sequence vs. the other implementations here: http://www.joachim-breitner.de/blog/archives/600-On-taking-the-last-n-elements-of-a-list.html
{-# LANGUAGE RankNTypes, ScopedTypeVariables #-}
import Control.Monad.ST
import Data.Foldable as F
import Data.Array.ST
import Data.Sequence (Seq)
import qualified Data.Sequence as Seq
import Criterion.Main
i x = x s k
where s f g x = f x (g x)
k x y = x
-- Now this gives an epic compilation error...
k = i (i (i i))
s = i (i (i (i i)))
{-
GHCi, version 7.10.2: http://www.haskell.org/ghc/ :? for help
@sacundim
sacundim / Add-negative-one.json
Last active May 27, 2020 04:56
Vega: what happens when the domain of a diverging color scale doesn't include its domainMid value
{
"$schema": "https://vega.github.io/schema/vega/v5.json",
"background": "white",
"padding": 5,
"style": "cell",
"data": [
{
"name": "example-data",
"values": [
{"y": 5, "value": -1},
@sacundim
sacundim / hardcoded.json
Last active May 27, 2020 05:40
Vega-Lite: Making overlay text look good on a diverging scale
{
"$schema": "https://vega.github.io/schema/vega-lite/v4.json",
"data": {"url": "data/cars.json"},
"transform": [
{
"aggregate": [{"op": "count", "as": "num_cars"}],
"groupby": ["Origin", "Cylinders"]
}
],
"encoding": {
@sacundim
sacundim / puerto-rico-municipal-bubble-chart.vl.json
Created June 17, 2020 04:39
Experimental bubble chart with Puerto Rico COVID-19 municipal time series
{
"config": {
"axis": {"labelFontSize": 14, "titleFontSize": 14},
"header": {"labelFontSize": 14, "titleFontSize": 14},
"legend": {"labelFontSize": 14, "titleFontSize": 14},
"title": {"align": "center", "fontSize": 20, "offset": 15}
},
"data": {"name": "data-1a2ae6c5a330adb8d6b476cc8f14c107"},
"mark": {
"type": "point",
@sacundim
sacundim / spec.json
Created June 17, 2020 05:24
Vega-Lite: Negative values in the size channel
{
"$schema": "https://vega.github.io/schema/vega-lite/v4.8.1.json",
"title": "Negative values in the size channel",
"data": {
"values": [-4, -3, -2, -1, 0, 1, 2, 3, 4]
},
"transform": [
{"calculate": "abs(datum.data)", "as": "abs"}
],
"repeat": ["data", "abs"],
@sacundim
sacundim / foia_150k_plus_PR.csv
Created July 7, 2020 03:08
Recipientes en Puerto Rico de préstamos de más de $150,000 del Paycheck Protection Program (Small Business Administration)
We can make this file beautiful and searchable if this error is corrected: It looks like row 6 should actually have 16 columns, instead of 1. in line 5.
"loanrange","businessname","address","city","state","zip","naicscode","businesstype","raceethnicity","gender","veteran","nonprofit","jobsretained","dateapproved","lender","cd"
a $5-10 million,CARIBBEAN RESTAURANTS LLC,"5 Carr Km 6 Hm 2 Barrio Amelia",GUAYNABO,PR,"00968","722513",Limited Liability Company(LLC),Unanswered,Unanswered,Unanswered,,500,"04/08/2020",Banco Popular de Puerto Rico,PR - 00
a $5-10 million,CARIBBEAN TEMPORARY SERVICES LLC,PONCE DE LEON 1431 SUITE 701,SANTURCE,PR,"00907","561320",Corporation,Hispanic,Female Owned,Unanswered,,500,"04/28/2020",Oriental Bank,PR - 00
a $5-10 million,CENTRO MEDICO DEL TURABO INC.,"100 AVE. LUIS MUNOZ MARIN",CAGUAS,PR,"00725","622110",Corporation,Unanswered,Unanswered,Unanswered,,500,"04/27/2020",Banco Popular de Puerto Rico,PR - 00
a $5-10 million,ENCANTO RESTAURANTS INC,"9615 AVE LOS ROMEROS 200 Montehiedra Office Centre",SAN JUAN,PR,"00926","722513",Corporation,Unanswered,Unanswered,Unanswered,,500,"04/08/2020",Banco Popular de Puerto Rico,PR - 00
a $5-10 m
@sacundim
sacundim / spec.json
Created July 11, 2020 07:23
Casos nuevos COVID-19 Puerto Rico, datos hasta el 11 de Julio del 2020
{
"config": {
"axis": {"labelFontSize": 14, "titleFontSize": 14},
"header": {"labelFontSize": 14, "titleFontSize": 14},
"legend": {"labelFontSize": 14, "titleFontSize": 14},
"title": {"align": "center", "fontSize": 20, "offset": 15},
"concat": {"spacing": 40},
"view": {"strokeWidth": 0}
},
"repeat": {