Skip to content

Instantly share code, notes, and snippets.

View stacycurl's full-sized avatar

Stacy Curl stacycurl

View GitHub Profile
sendText : HostName -> .base.Nat -> .base.Text ->{IO} ()
sendText hostName port text =
serviceName = ServiceName.ServiceName (.base.Nat.toText port)
socket = clientSocket hostName serviceName
send socket (.base.Text.asciiBytes text)
closeSocket socket
base.Text.asciiBytes : .base.Text -> .base.Bytes
base.Text.asciiBytes = .base.Bytes.fromList . base.Text.asciiNats
trait Splitable[A] {
def size(a: A): Int
def splitAt(a: A, index: Int): (A, A)
def subtract(lhs: A, rhs: A): A
}
object Splitable {
def apply[A](implicit S: Splitable[A]): Splitable[A] = S
implicit def tuple2Semigroup[A, B](implicit A: Semigroup[A], B: Semigroup[B]): Semigroup[(A, B)] = instance[(A, B)] {
case ((la, lb), (ra, rb)) => (A.append(la, ra), B.append(lb, rb))
}
/** Make an associative binary function into an __Serializable__ instance. */
def instance[A](f: (A, => A) => A): Semigroup[A] = SerializableSemigroup(f)
private case class SerializableSemigroup[A](f: (A, => A) => A) extends Semigroup[A] {
private val self: Semigroup[A] = this
@stacycurl
stacycurl / Bananas.scala
Created November 25, 2014 16:37
Program[Bananas]
import scalaz.effect.IO
import scalaz.{EitherT, Monad}
object Program extends ProgramInstances {
def apply[A](a: A): Program[A] = Program[A](EitherT.right[IO, Throwable, A](IO(a)))
}
trait ProgramInstances {
implicit object ProgramMonad extends Monad[Program] {
override def point[A](a: => A): Program[A] = Program[A](a)

Keybase proof

I hereby claim:

  • I am stacycurl on github.
  • I am stacycurl (https://keybase.io/stacycurl) on keybase.
  • I have a public key whose fingerprint is 8962 46C2 6E52 5CFF 69A5 82DB AD52 E9E1 5A45 C8A7

To claim this, I am signing this object: