Skip to content

Instantly share code, notes, and snippets.

View marc0der's full-sized avatar

Marco Vermeulen marc0der

View GitHub Profile
@marc0der
marc0der / Main.scala
Created December 4, 2016 20:23
Scala Ratpack App
object Main extends App {
RatpackServer.start { spec =>
spec.serverConfig(c => c.env())
.registry(Guice.registry(g => g.bind(classOf[VersionHandler])))
.handlers(chain => chain.get("version", classOf[VersionHandler]))
}
}
case class VersionConfig(@BeanProperty appName: String, @BeanProperty appVersion: String)
@marc0der
marc0der / gist:68e1d71d7542e5cf548f21ba9692afe0
Last active May 15, 2019 14:03
Proposed new Java list view for SDKMAN!
================================================================================
Available Java Versions
================================================================================
Vendor | Current | Version | Status | Identifier
--------------------------------------------------------------------------------
AdoptOpenJDK | | 12.0.1.j9 | available | 12.0.1.j9-adpt
| >>> | 12.0.1.hs | available | 12.0.1.hs-adpt
| | 11.0.3.j9 | installed | 11.0.3.j9-adpt
| | 11.0.3.hs | available | 11.0.3.hs-adpt
| | 8.0.212 | available | 8.0.212-adpt
@marc0der
marc0der / ST.scala
Last active November 15, 2020 21:20
ST Monad
class ForST private constructor() {
companion object
}
typealias STOf<S, A> = arrow.Kind2<ForST, S, A>
typealias STPartialOf<S> = arrow.Kind<ForST, S>
@Suppress("UNCHECKED_CAST", "NOTHING_TO_INLINE")
inline fun <S, A> STOf<S, A>.fix(): ST<S, A> = this as ST<S, A>
@marc0der
marc0der / README.md
Last active February 18, 2022 14:17

Functional error handling in Kotlin

Agenda:

  • About the (simple) exercise
  • Higher Order Functions
  • Throwing exceptions: here be dragons!!
  • Sentinel values: better but not great
  • The Option: error as an ADT
  • Functional combinators: add some sugar