Skip to content

Instantly share code, notes, and snippets.

View joshrotenberg's full-sized avatar
🐢

Josh Rotenberg joshrotenberg

🐢
View GitHub Profile
-module(function_options).
-export([my_fn/1, my_fn/2]).
-include_lib("eunit/include/eunit.hrl").
%% we'll populate a record with all of our interesting pieces. this also allows the specification of
%% defaults for things the user may not provide. required_arg will hold our required param, so we'll
%% leave them undefined. anything that starts with opt, however may or may not be supplied
@joshrotenberg
joshrotenberg / webmachine.hrl
Last active December 30, 2015 13:09
macro expand result when include-lib'ing in LFE
> (macroexpand '(include-lib "webmachine/include/webmachine.hrl"))
(progn
(defrecord wm_reqdata
method
scheme
version
peer
sock
wm_state
disp_path
@joshrotenberg
joshrotenberg / sequenceUntil.hs
Created January 15, 2014 20:31
From http://hackage.haskell.org/package/hylolib-1.4.0/docs/src/HyLo-Util.html, modified slightly to not return the final item in the list
sequenceUntil :: Monad m => (a -> Bool) -> [m a] -> m [a]
sequenceUntil _ [] = return []
sequenceUntil p (m:ms) = do a <- m
if p a
then return $ init [a]
else do as <- sequenceUntil p ms
return (a:as)
// Package readyset provides a simple set implementation.
package readyset
import "fmt"
// Set is a container for arbitrary data which ensures that duplicates elements will not be stored multiple times.
type Set map[interface{}]struct{}
// NewSet creates a new Set containing the given elements.
func NewSet(in ...interface{}) Set {
{-# OPTIONS -Wall #-}
module Main where
import Control.Concurrent (threadDelay)
import System.Environment (getArgs)
import System.INotify
main :: IO ()
main = do

This is my recommended path for learning Haskell.

Something to keep in mind: don't sweat the stuff you don't understand immediately. Just keep moving.

Primary course

Installing Haskell

Ubuntu PPA

(ns immutant.init
(:require [immutant.messaging :as msg]
[immutant.pipeline :as pl]
[clojure.tools.logging :as log]))
(defn add-two [m]
(log/info "add-two processing" m)
(+ 2 m))
@joshrotenberg
joshrotenberg / embedded.go
Last active June 17, 2025 01:42
embedded nsqd
package main
// This is a basic example of running an nsqd instance embedded. It creates
// and runs an nsqd with all of the default options, and then produces
// and consumes a single message. You are probably better off running a
// standalone instance, but embedding it can simplify deployment and is
// useful in testing.
// See https://github.com/nsqio/nsq/blob/master/nsqd/options.go and
// https://github.com/nsqio/nsq/blob/master/apps/nsqd/nsqd.go for
@joshrotenberg
joshrotenberg / gist:6274576fb605279ada93
Last active August 29, 2015 14:13
Quick attempt to take a nice Clojure map and convert it to a format that will play nice with Java Properties. Inspired by similar clojure.walk functions.
(require '[clojure.walk :refer [postwalk]]
[clojure.string :as s])
(defn keyword-to-property
"Replace :foo-bar with \"foo.bar\", etc."
[k]
(s/replace (name k) #"\-" "."))
(defn propertyize-map
"Recursively transforms all map keys from keywords to Java property strings and values to strings (if necessary)."
package groupcache_expire
import (
"log"
"strings"
"time"
"github.com/golang/groupcache"
)