Skip to content

Instantly share code, notes, and snippets.

import com.google.common.base.Optional;
public abstract class Validation<E, T> {
// avoid subclasses outside of this class
private Validation() {}
public abstract boolean isSuccess();
public abstract Optional<T> toOptional();
public abstract Validation<T, E> swap();
@fsarradin
fsarradin / MixinMain.java
Created October 21, 2015 08:31
Java 8 eXperiment
package me.mixin;
import java.util.Map;
import java.util.WeakHashMap;
import static java.util.Collections.synchronizedMap;
public class MixinMain {
interface WithName {
@fsarradin
fsarradin / CellsTest.scala
Created November 13, 2015 21:57
Part of Conway's game of life in Scala
package me.conway
import me.conway.cell.{Cells, Location}
import org.scalatest.{Matchers, FunSuiteLike}
import scala.language.implicitConversions
class CellsTest extends FunSuiteLike with Matchers {
implicit def tuple2Location(t: (Int, Int)): Location = Location(t._1, t._2)
@fsarradin
fsarradin / MainConsumer.scala
Created February 15, 2016 10:30
Reactive Kafka with Akka Stream
import akka.actor.ActorSystem
import akka.stream.ActorMaterializer
import akka.stream.scaladsl.{Sink, Source}
import com.softwaremill.react.kafka.{ConsumerProperties, ReactiveKafka}
import org.apache.kafka.common.serialization.StringDeserializer
object MainConsumer {
def main(args: Array[String]): Unit = {
implicit val actorSystem = ActorSystem("TestKafka")
@fsarradin
fsarradin / PageRank.scala
Created July 26, 2016 01:07
Simple PageRank algorithm
object PageRank {
def main(args: Array[String]): Unit = {
val graph = Map(
"A" -> List("B", "C"),
"B" -> List("C"),
"C" -> List("A")
)
val init = Map(
@fsarradin
fsarradin / haskell_rule_evaluator.hs
Created January 11, 2017 16:14
haskell_rule_evaluator
data BBool a b = BTrue a | BFalse b deriving (Show)
true :: a -> BBool a b
true a = BTrue a
trueMap :: (a -> b) -> BBool a c -> BBool b c
trueMap f (BTrue x) = BTrue (f x)
trueMap _ (BFalse x) = BFalse x
@fsarradin
fsarradin / FreeBank.scala
Created June 16, 2017 14:20
Free and State are in a bank
import cats.data.State
import cats.free.Free
import cats.free.Free.liftF
import cats.kernel.Monoid
import cats.~>
type Amount = Double
// ADT for bank operations
sealed trait BankOperation[A]

Applied Functional Programming with Scala - Notes

Copyright © 2016-2018 Fantasyland Institute of Learning. All rights reserved.

1. Mastering Functions

A function is a mapping from one set, called a domain, to another set, called the codomain. A function associates every element in the domain with exactly one element in the codomain. In Scala, both domain and codomain are types.

val square : Int => Int = x => x * x
@fsarradin
fsarradin / Main.scala
Created September 7, 2018 07:44
Getting some system information
import java.lang.management.ManagementFactory
import java.net.{InetAddress, NetworkInterface}
object Main {
import scala.collection.JavaConverters._
def main(args: Array[String]): Unit = {
val localHost = InetAddress.getLocalHost
println(localHost)
@fsarradin
fsarradin / TestMain.scala
Created March 4, 2019 11:08
Spark and Case class deser
import com.twitter.chill.Externalizer
import org.apache.spark.sql._
import org.apache.spark.sql.expressions.UserDefinedFunction
import org.apache.spark.sql.functions._
import scala.reflect.runtime.universe._
object TestMain {
def main(args: Array[String]): Unit = {
val spark: SparkSession =
SparkSession