Skip to content

Instantly share code, notes, and snippets.

@milessabin
milessabin / dec.scala
Created March 21, 2016 10:31
Idris's Dec in Scala
sealed trait Dec[+T]
final case class Yes[T](t: T) extends Dec[T]
final case object No extends Dec[Nothing]
object Dec extends Dec0 {
implicit def yes[T](implicit t: T): Dec[T] = Yes(t)
}
trait Dec0 {
implicit def no[T]: Dec[T] = No
const λ = ({raw}, ...subs) => {
const expr = raw
.reduce((prev, next, n) => prev + `(___subs[${n - 1}])` + next)
.replace(/#(\d+)/g, (_, n) => `(___args[${n}])`)
const evaluate = new Function('___subs', '___args', `return (${expr});`)
return (...args) => evaluate(subs, args)
}
@fffonion
fffonion / docker_clear_noname.sh
Last active August 20, 2018 14:38
select and remove container with no name specified
#!/bin/bash
docker rm $(docker ps -a|grep -P "(?:admiring|adoring|affectionate|agitated|amazing|angry|awesome|blissful|boring|brave|clever|cocky|compassionate|competent|condescending|confident|cranky|dazzling|determined|distracted|dreamy|eager|ecstatic|elastic|elated|elegant|eloquent|epic|fervent|festive|flamboyant|focused|friendly|frosty|gallant|gifted|goofy|gracious|happy|hardcore|heuristic|hopeful|hungry|infallible|inspiring|jolly|jovial|keen|kind|laughing|loving|lucid|mystifying|modest|musing|naughty|nervous|nifty|nostalgic|objective|optimistic|peaceful|pedantic|pensive|practical|priceless|quirky|quizzical|relaxed|reverent|romantic|sad|serene|sharp|silly|sleepy|stoic|stupefied|suspicious|tender|thirsty|trusting|unruffled|upbeat|vibrant|vigilant|vigorous|wizardly|wonderful|xenodochial|youthful|zealous|zen)_(?:albattani|allen|almeida|agnesi|archimedes|ardinghelli|aryabhata|austin|babbage|banach|bardeen|bartik|bassi|beaver|bell|benz|father of Indian nuclear programme|bhabha|bhaskara|blackwell|bohr|booth|borg
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
import Control.Monad.IO.Class
import Control.Monad.Trans.Class
import Prelude hiding (log)
--------------------------------------------------------------------------------
-- The API for cloud files.
class Monad m => MonadCloud m where
saveFile :: Path -> Bytes -> m ()
[<AutoOpen>]
module UoM =
// Units of measure for other than integral types
let inline (++) (w: ^W when ^W: (static member IsMeasureAbbrev: ^tm * ^t -> unit)) (t: ^t) = (# "" t: ^tm #)
let inline (--) (w: ^W when ^W: (static member IsMeasureAbbrev: ^tm * ^t -> unit)) (tm: ^tm) = (# "" tm: ^t #)
[<MeasureAnnotatedAbbreviation>]
type Guid<[<Measure>] 'm> = Guid
@raichoo
raichoo / coyo.idr
Last active October 26, 2017 22:27
Using Coyoneda to improve performance in Idris
module Main
{-
Strictness always bothers me a little, since it forces you to do
things like fusion manually. This prohibits code reuse. I won't
elaborate on this too much since there is already a great blog
post about this:
http://augustss.blogspot.co.uk/2011/05/more-points-for-lazy-evaluation-in.html
module ``sample program``
// These tests simulate a sample application that allows for
// two different commands, and a set of flags and values.
// The command is optional, the output path is required, and
// input files (at least) one is required as well. Both the
// programs (and the default program which is what runs if
// you don't spesify a command) have this in common. The two
// commands also have some separate flags that are different
@paulp
paulp / universal.scala
Created May 6, 2015 16:21
existentials are inverted universals
// [info] Running p.Run
// List(Fish(Bob, Esq.,12), Kitty(Thor, Esq.,java.awt.Color[r=255,g=200,b=0]))
import java.awt.Color
package p {
trait Pet[A] {
def name(a: A): String
def renamed(a: A, newName: String): A
}
@chernjie
chernjie / logrotate.d-docker
Created April 17, 2015 17:31
Logrotate docker logs, copy this file to /etc/logrotate.d/docker
/var/lib/docker/containers/*/*-json.log {
dateext
daily
rotate 365
compress
delaycompress
missingok
}
@moccos
moccos / mvln.sh
Last active December 30, 2015 10:09
mv -> ln
function mvln() {
function __mvln() {
local opts=$1
local src=$2
local dst=$3
if [ -d $dst ]; then
# When dst is dir, dst_file must be dir/filename
local file=${src##*/}
mv $opts -- $src $dst && ln -s -- ${dst}/${file} $src
else