Skip to content

Instantly share code, notes, and snippets.

@arturaz
arturaz / gist:7485096
Created November 15, 2013 14:24
How do I turn this slick method into a subquery?
val myRank = (session: Session) => {
val mine = Ratings.filter(_.userId === user.id).map(mapper).
first()(session)
Ratings.filter { mapper(_) > mine }.map(_.length + 1)
}
@arturaz
arturaz / gist:8035632
Created December 19, 2013 07:30
Lightweigth reactive extensions implementation for Unity3D
### utils/rx/Observable.cs ###
?using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using utils.functional;
namespace utils.rx {
public interface IObservable<T> {
ISubscription subscribe(Action<T> onChange);
@arturaz
arturaz / Functions.cs
Created December 19, 2013 08:18
Backporting .NET 4.5 functions to unity
/**
* Co & contravariant definitions of Action and Func
*
* Generated with scala:
*
(1 to 22).foreach { i =>
val r = 1 to i
val types = r.map(n => s"in P$n").mkString(", ")
val args = r.map(n => s"P$n p$n").mkString(", ")
/**
* Co & contravariant definitions of Action and Func
*
* Generated with scala:
*
println(s" public delegate void Act();")
println(s" public delegate R Fn<out R>();")
(1 to 22).foreach { i =>
val r = 1 to i
@arturaz
arturaz / Observable.cs
Last active January 1, 2016 12:59
Unity3D Mono bug when using... I don't know. Code? The line that crashes is in SceneBase.cs. This seems to be fixed in Unity 4.3.2f1
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using utils.functional;
namespace utils.rx {
public interface IObservable<out T> {
ISubscription subscribe(Act<T> onChange);
IObservable<A> map<A>(Fn<T, A> mapper);
package com.tinylabproductions.quazibuild.server.actor.live_game.model
import org.scalatest.{Matchers, FunSpec}
import org.scalatest.prop.PropertyChecks
import org.scalautils.TypeCheckedTripleEquals
import org.scalacheck.Gen
import org.scalacheck.Arbitrary.arbitrary
import com.tinylabproductions.quazibuild.server.actor.live_game.model.Droid.{RandomBehaviour, BackSlashBehaviour, SlashBehaviour}
import support.ExtraMatchers
trait MyPromise[A] {
def complete(value: A)
def future: MyFuture[A]
def value: Option[A]
}
trait MyFuture[A] {
def onComplete(f: A => Unit)
def value: Option[A]
def map[B](f: A => B): MyFuture[B]
using UnityEngine;
using System.Collections;
using com.tinylabproductions.TLPLib.Reactive;
using System;
public class CubeComponent : MonoBehaviour, IObserver<string>
{
// Use this for initialization
void Start() {
@arturaz
arturaz / gist:9757939
Last active August 29, 2015 13:57
Example of keyboard dashing behaviour for Unity3D using TLPLib Reactive Extensions (https://github.com/tinylabproductions/tlplib)
using System;
using System.Collections;
using com.tinylabproductions.TLPLib.Collection;
using com.tinylabproductions.TLPLib.Functional;
using com.tinylabproductions.TLPLib.Reactive;
using UnityEngine;
namespace Keyboard {
class KeyboardDash : MonoBehaviour {
private const int presses = 2;
@arturaz
arturaz / gist:1645200a73ac55eaf72e
Last active August 29, 2015 14:02
Unity compiler is buggy
ctx => { var i = ctx._1; var bi = ctx._2; var map = ctx._3;
Log.editor("flatMap subIter skip: \n ctx=" + ctx + "\n i=" + i + "\n bi=" + bi);
Outputs:
ctx=(
Iter(Some((System.Collections.Generic.List`1[System.Int32],0,False))|sh:Some(3)),
Iter(Some((System.Collections.Generic.List`1[System.Int32],0,False))|sh:Some(2)),
System.Fn`2[System.Int32,com.tinylabproductions.TLPLib.Iter.Iter`2[System.Int32,System.Tpl`3[System.Collections.Generic.IList`1[System.Int32],System.Int32,System.Boolean]]]
)