Skip to content

Instantly share code, notes, and snippets.

View gabro's full-sized avatar

Gabriele Petronella gabro

View GitHub Profile
@gabro
gabro / Matrix
Created December 19, 2014 01:55
dependent type Matrix with implicit conversion from Vect m (Vect n a)
module Matrix
data Matrix : Nat -> Nat -> Type -> Type where
Matr : Vect m (Vect n a) -> Matrix n m a
(+) : Matrix n m a -> Vect n a -> Matrix n (m + 1) a
(+) (Matr rows) row = Matr (rows ++ [row])
implicit vectVectToMatr : Vect m (Vect n a) -> Matrix n m a
vectVectToMatr = Matr
@gabro
gabro / iff.js
Last active August 29, 2015 14:13 — forked from utaal/iff.js
let if = macro {
rule {
($x:expr) {
$truebody
...
$truelast:expr
} else {
$falsebody
...
$falselast:expr
@gabro
gabro / transformers-ftw.scala
Last active August 29, 2015 14:14
OptionT exercise
import scalaz._; import Scalaz._
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
def getInteger(x: Int): OptionT[Future, Int] = 42.point[Future].liftM[OptionT]
def computeList(n: Int): OptionT[Future, List[Int]] = (1 to n).toList.traverseU(getInteger)
//if you need a Future[OptionT[List[Int]]] just use run
computeList(3).run // Some(List(1, 2, 3))
@gabro
gabro / vanilla-scala.scala
Last active August 29, 2015 14:14
Vanilla Scala exercise
import scala.concurrent._
import scala.concurrent.duration._
import scala.concurrent.ExecutionContext.Implicits.global
def getInteger(x: Int) = Future.successful(
if (x == 11) None else Some(x))
def sequence[T](l: Seq[Option[T]]): Option[List[T]] = l.foldRight(Some(Nil) : Option[List[T]]) {
(or, ox) => for (r <- or; x <- ox) yield (r :: x)
}
@gabro
gabro / Messages.scala
Last active August 29, 2015 14:21
rapture-i18n + ICU
object Messages {
type IString = I18nString[En with It]
val cart: IString = en"Shopping cart" | it"Carrello"
val login: IString = en"Login" | it"Accedi"
val betReplayedBy: IString =
en"""
Ticket replayed by {n, plural,
@gabro
gabro / notify_build_result.sh
Last active October 22, 2015 04:47
Bambo <3 GitHub Status API
#!/bin/bash
GITHUB_API=https://api.github.com
AUTH_TOKEN= # GITHUB API TOKEN HERE
REPO= # REPO NAME HERE
URL=${bamboo.buildResultsUrl}
SHA=${bamboo.repository.revision.number}
SUCCESS_DESCRIPTION="The Bamboo CI build passed"
FAILURE_DESCRIPTION="Build #${bamboo.buildNumber} failed"
API.cancelConsultation(consultation._id)
|> showHUDOnStart(status: "canceling consultation")
|> showHUDOnSuccessAndError
|> start()
@gabro
gabro / statusbar_snippet.swift
Created June 29, 2015 17:39
colored status bar
// let's create our status bar background view
let statusBar = UIView()
// set the navigation bar color to white (assuming `navController` is our `UINavigationController`)
navController.navigationBar.barTintColor = UIColor.whiteColor()
// turn off the autoresizing mask, since we're using autolayout
statusBarBg.setTranslatesAutoresizingMaskIntoConstraints(false)
// set a background color for the status bar
@gabro
gabro / ReactiveCocoa.podspec
Created July 10, 2015 14:46
ReactiveCocoa v3.0-beta.9 Podspec
Pod::Spec.new do |s|
s.name = "ReactiveCocoa"
s.version = "3.0-beta.9"
s.summary = "A framework for composing and transforming streams of values"
s.description = <<-DESC
ReactiveCocoa (RAC) is an Objective-C framework for Functional Reactive Programming. It provides APIs for composing and transforming streams of values.
DESC
s.homepage = "https://github.com/ReactiveCocoa/ReactiveCocoa"
s.license = "MIT"
@gabro
gabro / uvc_swizzle.swift
Created July 17, 2015 09:41
Handle viewWillTransitionToSize across all `UIViewController`s
// UIViewController+BackgroundStatusBar.swift
// hailadoc-ios
//
// Created by Gabriele Petronella on 7/16/15.
// Copyright (c) 2015 buildo. All rights reserved.
//
import Foundation
extension UIViewController {