Skip to content

Instantly share code, notes, and snippets.

View kmizu's full-sized avatar

Kota Mizushima kmizu

View GitHub Profile
@kmizu
kmizu / Sequence.scala
Created November 9, 2017 20:58
An example program to show the power of pattern matching
sealed trait Sequence[+T]
case class Cons[+T](head: T, tail: Sequence[T]) extends Sequence[T]
case object Empty extends Sequence[Nothing]
object Main {
def last2[T](list: Sequence[T]): Sequence[T] = list match {
case result@Cons(_, Cons(_, Empty)) => result
case Empty =>
sys.error("list should not be empty")
case Cons(_, Empty) =>
@kmizu
kmizu / file0.txt
Last active November 8, 2017 15:15
Dottyのimplicit function typeを使って、Type-Safe Builderを実現する ref: http://qiita.com/kmizu/items/10940b4c46876ae8a12d
table {
row {
cell("A")
cell("B")
cell("C")
}
row {
cell("1")
cell("2")
}
@kmizu
kmizu / vector.rs
Created October 13, 2017 15:58
Returns closure which is FnOnce
fn test() -> Box<MFunBox<i32, Box<Vec<i32>>>> {
let mut v = Box::new(vec![1, 2, 3]);
return Box::new(move |x: i32|{ v.push(x); v});
}
trait MFunBox<A, B> {
fn mcall(self: Box<Self>, arg: A) -> B;
}
impl<A, B, T:FnOnce(A) -> B> MFunBox<A, B> for T {
@kmizu
kmizu / Main.scala
Last active October 11, 2017 06:58
TShow
case class Text(body: String)
object Text {
def pack(body: String): Text = Text(body)
}
trait Show[A] {
def show(a: A): String
}
@kmizu
kmizu / G.scala
Created September 19, 2017 12:24
line feed before dot
object G {
def main(args: Array[String]): Unit = {
println(
List(1, 2, 3)
.map{x => x * 2}
.filter{x => x > 2}
)
}
}
@kmizu
kmizu / file0.txt
Last active September 17, 2017 04:12
Scalaにまつわるよくある誤解~returnの省略~ ref: http://qiita.com/kmizu/items/8be316b481d53806d28a
def add(x: Int, y: Int): Int = {
x + y
}
@kmizu
kmizu / M.kt
Created September 15, 2017 17:09
M.kt
fun main(args: Array<String>) {
val message: String? = null
println(message?.length)
}
@kmizu
kmizu / file0.txt
Created September 15, 2017 09:02
プログラミング言語の構文の複雑さについて考える 〜Java vs. Scala〜 ref: http://qiita.com/kmizu/items/62db9d44f929055fbfc7
‘try’ (‘{’ Block ‘}’ | Expr) [‘catch’ ‘{’ CaseClauses ‘}’] [‘finally’ Expr]
@kmizu
kmizu / Block.scala
Created August 28, 2017 07:34
Scalaのブロック構文的なものの例(の特殊ケース)
def when[A](cond: Boolean)(th: => A)(el: => A): A = if(cond) th else el
var i = 1
when(i < 2) {
println("i < 2")
} {
println("i >= 2")
}
// i < 2
@kmizu
kmizu / file0.txt
Created August 25, 2017 07:52
KotlinプログラマのためのScala入門(2)〜発展編〜 ref: http://qiita.com/kmizu/items/db6461485b9dd320de23
class Foo {
var myList: List<String>? = null
fun hoge(list: List<String>) {
myList = list
}
}