Skip to content

Instantly share code, notes, and snippets.

View deanwampler's full-sized avatar

Dean Wampler deanwampler

View GitHub Profile
start1 = time.time()
ids = [(i, rbusy.remote(1.0), time.time() - start1) for i in range(5)]
end1 = time.time() - start1
print('duration1: %6.3f MILLISECONDS' % (1000*end1))
for i,id,t in list(ids):
print('%d: %s (time: %6.3f MILLISECONDS)' % (i, id, 1000*t))
start2 = time.time()
for i,id,t in list(ids):
print('%d: %s (time: %6.3f MILLISECONDS)' % (i, ray.get(id), 1000*(time.time() - start2)))
@deanwampler
deanwampler / scala2-3-types.scala
Last active October 11, 2020 20:00
Compares Scala 2 vs. Scala 3 optional braces
// With braces
trait Monoid2[A] {
def add(a1: A, a2: A): A
def zero: A
}
// Without braces
trait Monoid3[A]:
def add(a1: A, a2: A): A
def zero: A
@deanwampler
deanwampler / scala2-3-methods.scala
Created October 11, 2020 20:10
Compares Scala 2 vs. Scala 3 methods optional braces
def m2(s: String): String = {
val result = s.toUpperCase
println(s"output: $result")
result
}
def m3(s: String): String =
val result = s.toUpperCase
println(s"output: $result")
result
@deanwampler
deanwampler / scala2-3-partial-functions.scala
Last active April 21, 2021 21:26
Scala 2 vs 3 braceless syntax: partial functions
val o2: Option[Int] => Int = {
case Some(i) => i
case None => 0
}
val o3: Option[Int] => Int =
case Some(i) => i
case None => 0
@deanwampler
deanwampler / scala2-3-match-expressions.scala
Created October 11, 2020 20:21
Scala 2 vs. 3 braceless syntax: match expressions
0 match {
case 0 => "zero"
case _ => "other value"
}
0 match
case 0 => "zero"
case _ => "other value"
@deanwampler
deanwampler / scala2-3-custom-controls.scala
Last active November 18, 2020 13:33
Scala 3 braceless syntax and user-defined controls?
import scala.annotation.tailrec
@tailrec def loop(whileTrue: => Boolean)(f: => Unit): Unit =
f
if (whileTrue) loop(whileTrue)(f)
var i=5
loop(i > 0) {
println(i)
i -= 1
@deanwampler
deanwampler / scala2-3-controls.scala
Created October 11, 2020 21:02
Scala 2 vs. 3 optional control syntax changes.
for (i <- 0 until 5) println(i) // Original syntax
for i <- 0 until 5 do println(i) // New syntax
for i <- 0 until 5 yield 2*i
for i <- 0 until 10
if i%2 == 0
ii = 2*i
yield ii
val i = 10
if (i < 10) println("yes") // Original syntax
@deanwampler
deanwampler / scala2-3-ArrowAssoc.scala
Created October 18, 2020 15:15
Scala 2 ArrowAssoc definition
implicit final class ArrowAssoc[A](private val self: A) extends AnyVal {
@inline def -> [B](y: B): (A, B) = (self, y)
@deprecated("Use `->` instead...", "2.13.0")
def →[B](y: B): (A, B) = ->(y)
}
@deanwampler
deanwampler / scala2-3-ArrowAssocExtensionMethod.scala
Last active February 26, 2021 20:08
ArrowAssoc replaced with an extension method
// From https://github.com/deanwampler/programming-scala-book-code-examples/
import scala.annotation.targetName
extension [A,B] (a: A)
@targetName("arrow2") def ~>(b: B): (A, B) = (a, b)
// Alternative, where the [B] goes on the method instead. Support for this alternative was
// introduced in Scala 3.0.0-RC1. This form is closer to what we're used to doing with
// normal parameterized types and methods that take additional type parameters. the type
// signature for the two ~> methods will be slightly different, but they work the same.
@deanwampler
deanwampler / scala2-3-Conversion.scala
Last active December 27, 2020 15:18
Example of using a "given Conversion" in Scala 3.
scala> import scala.language.implicitConversions
scala> case class Dollars(amount: Double):
| override def toString = f"$$$amount%.2f"
| case class Percentage(amount: Double):
| override def toString = f"${(amount*100.0)}%.2f%%"
| case class Salary(gross: Dollars, taxes: Percentage):
| def net: Dollars = Dollars(gross.amount * (1.0 - taxes.amount))
// defined case class Dollars
// defined case class Percentage
// defined case class Salary