Skip to content

Instantly share code, notes, and snippets.

@xuwei-k
xuwei-k / Bench.scala
Last active September 29, 2023 06:56
package p1
import org.openjdk.jmh.annotations.Benchmark
object Bench {
val values: List[Either[Int, Int]] = (1 to 100_000).map{
case n if n % 2 == 0 =>
Right(n)
case n =>
Left(n)
@xuwei-k
xuwei-k / 11
Last active September 22, 2023 07:48
public java.lang.String x(java.lang.String);
descriptor: (Ljava/lang/String;)Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=2, args_size=2
0: aload_1
1: invokedynamic #27, 0 // InvokeDynamic #0:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String;
6: areturn
@xuwei-k
xuwei-k / FunctorPolyFunction.scala
Created July 29, 2023 01:39
impl Functor use PolyFunction
package example
trait Functor[F[_]] {
def map[A, B](fa: F[A])(f: A => B): F[B]
}
object Functor {
def fromPolyFunction[F[_]](x: [A, B] => (fa: F[A]) => (f: A => B) => F[B]): Functor[F] =
new Functor[F] {
def map[A, B](fa: F[A])(f: A => B): F[B] = x(fa)(f)
scalaVersion := "3.3.0"
libraryDependencies += "org.openjdk.jol" % "jol-core" % "0.17"
@xuwei-k
xuwei-k / Main.scala
Last active October 5, 2023 22:27
playframework Scala 3 hello world
import play.api.BuiltInComponents
import play.api.Mode
import play.api.mvc._
import play.api.routing._
import play.api.routing.sird._
import play.core.server.NettyServer
import play.core.server.ServerConfig
object Main {
// 1つのScalaファイルで済むので、
package a {
object X
package b {
object Y
}
}
package b {
object Z
# checkoutその他は省略
- run: sbt compileなどの他のタスク色々 writeExternalDependencies
- name: upload dependencies.txt
if: github.event_name == 'push'
run: |
# いい感じにuploadとdownloadできれば、
# github actionsのartifactでもなんでも良い。
# 最近某所ではS3の方が便利というか楽なので、それ使ったりもしているので、その場合の例
aws s3 cp target/dependencies.txt s3://適当なURI/${{github.ref_name}}/dependencies.txt
- id: get_previous_dependencies
commands += {
def getProjects(s: State): Seq[String] = {
val extracted = Project.extract(s)
val currentBuildUri = extracted.currentRef.build
val buildStructure = extracted.structure
val buildUnitsMap = buildStructure.units
val currentBuildUnit = buildUnitsMap(currentBuildUri)
val projectsMap = currentBuildUnit.defined
projectsMap.values.map(_.id).toVector
}
trait Functor[F[_]]
def map [A, B](fa: F[A])(f: A => B ): F[B]
trait Applicative[F[_]]
def ap [A, B](fa: F[A])(f: F[A => B]): F[B]
trait Monad[F[_]]
def bind [A, B](fa: F[A])(f: A => F[B]): F[B]
trait Contravariant[F[_]]
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.8.18" exclude ("com.typesafe.play", "twirl-api_2.12"))
resolvers += Resolver.sbtPluginRepo("releases")
import scala.sys.process.Process
Seq(Compile, Test).map { x =>
(x / TaskKey[File]("dependencySvg")) := {
val output = target.value / s"dependencies-${x.name}.svg"
Process(Seq(