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:
I hereby claim:
To claim this, I am signing this object:
| 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) |
| 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 |
| 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 |
| 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 |