Skip to content

Instantly share code, notes, and snippets.

View kmizu's full-sized avatar

Kota Mizushima kmizu

View GitHub Profile
@kmizu
kmizu / PTailRecursion.scala
Created January 31, 2019 18:05
Partial tail-recursion is also optimized in scalac. It's an experiment for verifying the result of https://twitter.com/chrilves/status/1091032475801927680
object PTailRecursion {
def test(n: Int): Int =
if (n == 0)
test(n)
else
2 * test(n)
}
@kmizu
kmizu / file0.scala
Last active January 3, 2019 17:11
型なし言語のメリットを一言で書いてみる ref: https://qiita.com/kmizu/items/0892eca588088836967f
sealed abstract class JsonValue
case class JsonObject(val members: Map[String, JsonValue]) extends JsonValue
case class JsonNumber(val value: Int) extends JsonValue
case class JsonString(val value: String) extends JsonValue
...
@kmizu
kmizu / file0.ml
Created December 17, 2018 07:45
OCaml初心者によるOCaml雑感 ref: https://qiita.com/kmizu/items/b00cfba234d11d85f956
[1, 2, 3, 4]
@kmizu
kmizu / file0.scala
Last active November 29, 2018 02:13
ScalaとJavaの境界におけるnullの扱い方 ref: https://qiita.com/kmizu/items/e4c7473f9ed831b5a1de
import java.util
def useMap(config: util.Map[String, String]): Unit = {
// "version" に対応する値が必ずあるとわかっているとする
val version = config.get("version")
...
}
@kmizu
kmizu / file0.txt
Last active November 21, 2018 00:41
Erlangにパーザコンビネータで入門してみた ref: https://qiita.com/kmizu/items/459a982117a74e610b68
root ::= expression;
expression ::= A;
A ::= M ( "+" M | "-" M)*;
M ::= P ( "*" P | "/" P)*;
P ::= "(" expression ")" | number;
number ::= [0-9]+;
@kmizu
kmizu / StringSwitch.java
Created November 12, 2018 09:38
String Switch in Java
public class StringSwitch {
public static void main(String[] args) {
String f = "foo";
switch(f) {
case "foo":
System.out.println("foo");
break;
case "bar":
System.out.println("foo");
break;

構築する環境

  • Ubuntu 18.04 64bit
  • opam 2.0.0
  • ocaml 4.06.1 (最新は4.07だが、batteriesが未対応なので4.06で作る)
  • dune 1.2.1

準備

opam 2.0.0 のインストール

@kmizu
kmizu / file0.txt
Last active October 1, 2018 16:03
Facebookの新言語Skipの構文を雑に見てみた(1) ref: https://qiita.com/kmizu/items/51c01dd6a13592b4e758
fun add(x: Int, y: Int): Int {
x + y
}
@kmizu
kmizu / file0.txt
Last active August 21, 2018 16:01
Graal VMのnative-imageでscalac-nativeをビルドする ref: https://qiita.com/kmizu/items/89253e29a2f13db84802
$ export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home
@kmizu
kmizu / file0.txt
Last active July 24, 2018 18:57
型推論に関する最近の話題への雑感 ref: https://qiita.com/kmizu/items/2ace816340e8553bd278
fun fold_left f [] z = z
| fold_left f (x::xs) z = fold_left f xs (f z x);
val fold_left = fn : ('a -> 'b -> 'a) -> 'b list -> 'a -> 'a