Skip to content

Instantly share code, notes, and snippets.

View channingwalton's full-sized avatar
🏠
Working from home

Channing Walton channingwalton

🏠
Working from home
View GitHub Profile
@channingwalton
channingwalton / Console.scala
Last active October 30, 2016 22:21
Alternatives to GADTs in Scala
// No case classes
object Consoles {
trait ConsoleAlg[F[_]] {
def readLine: F[Option[String]]
def printLine(line: String): F[Unit]
}
trait Console[+A] {
@channingwalton
channingwalton / Reverse.idr
Created September 29, 2014 21:15
Reverse an Idris Vect
module Main
rev : Vect n a -> Vect n a
rev Nil = Nil
rev (x :: xs) = (rev xs) ++ (x :: Nil)
main : IO ()
main = putStrLn $ show $ rev [1,2,3]
fails to compile with
21:15:22.745 ERROR akka://ENSIME/user/$b o.e.s.SocketHandler - Error in socket reader:
java.lang.NumberFormatException: For input string: "new Wo"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[na:1.8.0_31]
at java.lang.Integer.parseInt(Integer.java:580) ~[na:1.8.0_31]
at java.lang.Integer.valueOf(Integer.java:740) ~[na:1.8.0_31]
at org.ensime.server.FramedStringProtocol$class.readString(FramedStringProtocol.scala:39) ~[server_2.11-0.9.10-SNAPSHOT.jar:0.9.10-SNAPSHOT]
at org.ensime.server.SwankProtocol.readString(SwankProtocol.scala:10) ~[server_2.11-0.9.10-SNAPSHOT.jar:0.9.10-SNAPSHOT]
at org.ensime.server.S≈wankProtocol.read(SwankProtocol.scala:15) ~[server_2.11-0.9.10-SNAPSHOT.jar:0.9.10-SNAPSHOT]
at org.ensime.server.SocketHandler$$anon$1.run(SocketHandler.scala:43) ~[server_2.11-0.9.10-SNAPSHOT.jar:0.9.10-SNAPSHOT]
@channingwalton
channingwalton / RxConcurrency.scala
Created April 28, 2016 08:16
Some concurrency testing for Rx
package reactive
import java.util.concurrent.TimeUnit
import rx.lang.scala.{Observable, Subject}
import scala.concurrent.duration.Duration
/**
* The problem: can two threads banging away from two sources be merged and have predictable results?
@channingwalton
channingwalton / test.html
Created April 29, 2016 21:10
positive numbers only
<SCRIPT language=Javascript>
<!--
function isNumberKey(evt)
{
var charCode = (evt.which) ? evt.which : event.keyCode
return charCode > 47 && charCode < 58;
}
//-->
</SCRIPT>
</HEAD>
@channingwalton
channingwalton / keybase.md
Last active July 31, 2016 21:00
Verification for keybase

Keybase proof

I hereby claim:

  • I am channingwalton on github.
  • I am channingwalton (https://keybase.io/channingwalton) on keybase.
  • I have a public key ASD_xyZHdprhe-YpLLpvwqvgVW-wFGmVXHZ8fwXP_1soLwo

To claim this, I am signing this object:

@channingwalton
channingwalton / SetPerformance.scala
Created April 29, 2017 09:26
Benchmark for performance of .toSet
package set.performance
import java.util.concurrent.TimeUnit
import scala.concurrent.duration.FiniteDuration
/**
* On my machine the fast method takes < 2 ms, the slow one 2.2s
*/
object SetPerformance {

Keybase proof

I hereby claim:

  • I am channingwalton on github.
  • I am channingwalton (https://keybase.io/channingwalton) on keybase.
  • I have a public key ASAzN6zGSraBz_wTqUhbQLqzT4wmAjuy3zGojAOeYGo2Uwo

To claim this, I am signing this object:

@channingwalton
channingwalton / NonEmptySet.scala
Last active March 24, 2018 16:48
NonEmptySet Implementation
import cats.data.NonEmptyList
import cats.Eq
import scala.collection.GenTraversableOnce
sealed trait NonEmptySet[T] extends (T => Boolean) {
def head: T
def set: Set[T]
def +(t: T): NonEmptySet[T]
def ++(ts: NonEmptySet[T]): NonEmptySet[T]