kmizuの日記

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

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

scala-nativeのサンプルプログラムをLinuxで動作させる場合の注意点

kmizu.hatenablog.com についての補足的なエントリです。scala-nativeのサンプルプログラムsmallpt.scalaは __stderrpを使っていますが、Linux系には存在しないので、リンク時にこけてしまいます。 これを修正するには、smallpt.scalaとstdlib.scalaの__stde…

scala-nativeでは相互末尾再帰呼び出しも最適化される

Scala Nativeなのかscala-nativeなのか迷ったのですが、今後はリポジトリ名のscala-nativeに統一しようかと思います。さて、タイトルについてですが、そのまんまです。 サンプルコードは以下: gist.github.com 通常のJVM上でのScalaでは、末尾呼び出しが自…

Scala Nativeを動かしてみた(1)

Scala Nativeはscalaのコードを(LLVMのIRを経由して)ネイティブコードにコンパイルするAOTコンパイラ(Ahead Of Time Compiler)です。その存在については、少し前にサイトができていたことで一部で話題になっていましたが、Scala Days 2016 NYCにて正式に…

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

リストベースの集合であるKListSet リストベースのマップであるKListMap 遅延評価を提供するKLazy のサポートを追加しました。また、必要になった時点で、KListにもメソッドを随時継ぎ足していってます。詳細についてはREADMEを参照ください。 github.com

Kotlinでメソッド定義にrunを使う意義

Kotlinにはrun というメソッドがstdlibにあります。これ、定義をみると、 @kotlin.internal.InlineOnly public inline fun <R> run(block: () -> R): R = block() 引数で渡された0引数ラムダ式(とKotlinの用語法に従っておく)をそのまま呼び出すだけというも</r>…

stripMarginの歴史

ScalaのString(正確にはStringOps)にはstripMarginというメソッドがあります。これは、主に複数行文字列に使われる機能で、たとえば、 """|class Hello { | |}""".stripMargin のようにすると、 res0: String = class Hello { } という文字列が得られ、行頭…

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

ちょっと前から少しずつ作っていたのですが、最低限の機能はそろったので公開してみることにしました。Kotlinの標準ライブラリのコレクションは読み取り専用ビューは提供してくれるものの、不変コレクションがないのが不満だったので作ってみようというのが…