kmizuの日記

プログラミングや形式言語に関係のあることを書いたり書かなかったり。

2016-11-01から1ヶ月間の記事一覧

Kotlin Internal勉強会を開催しました

connpass.com 数ヶ月前からKotlinをちょくちょく触っていて、「もっと深いところを知りたいな」と思ったので開催することにしたのがこの勉強会です。さすがにInternalとついていたせいか、それほど参加者は多くなかったですが、かえって質問しやすい空気にな…

Klassic開発日誌(2016/11/20): Hindley-Milner型推論はじめました

以前、 kmizu.hatenablog.com という記事を書いたことがあったのですが、このときはまだ多相型を実装しておらず、Dynamicという謎の型でごまかしていましたが、その辺の制限をとっぱらいましたという話です。 型推論というと、最近はやりの言語はだいたい型…

Kotlinのコレクションに対してstreamメソッドが呼び出せない

Java 8でjava.util.Collectionに追加されたメソッドとして、Streamを返すstream()メソッドがあります。これ、java.util.Collectionに追加されたメソッドなのだから、当然Kotlinでも呼び出せて良いはずですが、実はできません。 >>> val x = listOf(1, 2, 3, …

Kotlin用不変コレクションライブラリ kollection 0.4リリース

しばらく触っていなかったのですが、ふと思い立って、データ構造を追加してみました。 具体的には、 TreeMap: 赤黒木ベースのMap TreeSet: 赤黒木ベースのSet の二つを追加しました。実装はほとんど、Scala版のRedBlackTreeのポーティングですが、is乱発しな…

Kotlinのnullable typeはzero overheadではありません

タイトルの通りなんですが、JetBrainsさんが公式で Zero-overhead null-safety とか書いているおかげで信じている人もいるかもしれません。ですが、それは正しくありません。 試しに、次のコードをコンパイルしてみましょう。 fun double(x: Int?): Int = x?…

Klassic開発日誌(2016/10/08):型チェックはじめました

冷やし中華はじめました、みたいなこと書いてみたかっただけです。はい。 これまでKlassicでは、メインのインタプリタは(あとで静的型をつけることを意識しつつ)動的型言語でしたが、少しずつ静的型を加えていっています。現在のところ、まだ多相型を扱え…

JSONのようでそうでないデータフォーマットNSON 0.0.1リリース

きっかけは、昨夜の思いつきでした。 今日ふと思ったこと: JSONって、そもそもカンマ要らないんじゃね?{ "Foo" : "BAR" "BAR": "Baz" "Hoge" : { "name" : "Hoge" } }特に曖昧性なくパーズできるように思える。配列も同じく。— Kota Mizushima (@kmizu) 20…

Onion開発日誌/2016/11/05 単一式を本体として持つメソッドや関数定義を可能に

最近、Klassicと同時にOnionもちょくちょく更新するようになったので、変更点など書いていこうと思う。 今日は、メソッドや関数定義に、文ではなく式を取れるようにする改良を行った。今どきの言語だと当たり前だが、Onionを最初に開発した2004-2005年の時点…