Skip to content

Instantly share code, notes, and snippets.

View abdheshkumar's full-sized avatar

Abdhesh Kumar abdheshkumar

View GitHub Profile
** Working */
sealed class AB[+A] protected(protected val in: List[A], protected val out: List[A])
object AB {
class ABC(override protected val in: List[Int],
override protected val out: List[Int])
extends AB(in, out)
}
/**Not Working*/
sealed class AB[+A] protected(protected val in: List[A], protected val out: List[A])
@abdheshkumar
abdheshkumar / Typeclasses.scala
Created August 10, 2017 09:33
How to implement typeclasses
trait Named[E] {
val name: String
}
case class EOL()
implicit val namedInt = new Named[Int] {
override val name: String = "Int"
}
@abdheshkumar
abdheshkumar / function-translation.scala
Last active August 10, 2017 09:58
Function Translation
val fun: ((Int, Int)) => Int = (kv: Tuple2[Int, Int]) => kv match {
case (k, v) => k + v
}
val fun1: Function1[Tuple2[Int, Int], Int] = (kv: Tuple2[Int, Int]) => kv match {
case (k, v) => k + v
}
val myMap = Map(1 -> 2, 2 -> 3)
myMap.map(fun)
@abdheshkumar
abdheshkumar / facades.scala
Last active August 22, 2017 13:01
ScalaJs facades
@js.native
trait Auth extends js.Object {
val byToken: js.UndefOr[LoginWithSSOToken] = js.undefined
val byCredentials: js.UndefOr[LoginWithPlainText] = js.undefined
}
object Auth {
def apply(authType: AuthType): Auth = authType match {
case byToken: LoginWithSSOToken => js.Dynamic.literal(byToken = byToken).asInstanceOf[Auth]
case byCredentials: LoginWithPlainText => js.Dynamic.literal(byCredentials = byCredentials).asInstanceOf[Auth]
```javascript
{
"title":"Report Properties",
"description":"A JSON Schema describing a Report Properties",
"$schema":"http://json-schema.org/draft-04/schema#",
"type":"object",
"properties":{
"server":{
"type":"string",
"description":"URL of JRS instance."
@abdheshkumar
abdheshkumar / digest.scala
Created September 8, 2017 13:18
Akka stream flow fold
import java.nio.ByteBuffer
import java.security.MessageDigest
import javax.xml.bind.DatatypeConverter
import akka.actor.ActorSystem
import akka.http.scaladsl.Http
import akka.http.scaladsl.model.HttpMethods.GET
import akka.http.scaladsl.model.{HttpRequest, HttpResponse}
import akka.stream.ActorMaterializer
import akka.stream.scaladsl.{Flow, Keep, Sink}
{
type: 'devs.Model',
inPorts: [],
outPorts: [],
size: {
width: 80,
height: 80
},
attrs: {
@abdheshkumar
abdheshkumar / Object-Function.js
Created October 3, 2017 09:34
Object-Function
Html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
Office = {
initialize: function (reason) {
trait Item
trait PlasticItem extends Item
trait PlasticBottle extends PlasticItem
trait PaperItem extends Item
trait NewsPaper extends PaperItem
sealed trait A
case class B[Req, Res](r: Req, rs: Res) extends A
case class C[Req](r: Req, errorCode: Int, errorMessage: String) extends A
trait TypeA[Req, Res] {
def success(t: Req, r: Res): Unit
def error(t: Req): Unit
}
implicit val forString = new TypeA[String, String] {
override def success(t: String, r: String): Unit = ???