kmizuの日記

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

実践Scala入門(共著)が発売されます

https://www.amazon.co.jp/dp/4297101416 企画自体は2015年くらいから始まっていたんですが、紆余曲折あって、約3年経ってしまいました。ともあれ、ようやく出版までこぎつけられてほっと一息です。 実際には多少遅れる可能性がありますが、10月27日から技術…

ScalaMatsuri 1日目の雑感

ScalaMatsuri Training Dayは、別チケットであることからもわかるように、ScalaMatsuriとは若干独立していました。というわけで、この日から本番でした。この日、私が一番楽しみにしていたのはMartin Thompsonさん(Javaで高パフォーマンスのメッセージング…

ScalaMatsuri 2018 Training Dayの雑感

今は金曜の夜(土曜日の朝とも言う)で、眠れないので、せっかくなので感想でも書いてみるかーってな具合に書いてみることにしました。 さて、ご存じの方も多いかもしれませんが、2016に実質運営を譲って、2017には名目上も座長の権限を譲ったため、今年は私…

Hello, Dart (2) - パーザコンビネータ

いつだったか、新しい言語を学ぶときのHello, Worldはパーザコンビネータを書くことにしてる、といった事を言った覚えがあります。実際、これまで学んできたたいていの言語でミニパーザコンビネータライブラリを書いてきました。というわけで、Dartでもパー…

Hello, Dart (1) - フィボナッチ数列

Flutterを触ってみたくなったので、ついでにDartの勉強も始めることにした。手始めに、フィボナッチ数列を求める Stream を作って、そっから最初の10要素を取り出して表示するというプログラム。 import 'dart:async'; import 'dart:core'; main() async { v…

ScalaMatsuri 2018 Training Dayで「Scalaに関する神話と真実」という発表をします

このブログを更新するのも、ちょっと久しぶりですね。今回は宣伝というか、表題の件についてちょっと書こうと思います。 ここ数年、ScalaMatsuriはかなりの規模で開催されています。例年は2日間だったのを、3日間に拡張して、最初の1日を 「Training Day」と…

今年の振り返り

今年もあとわずかとなって来ましたので、今年を振り返ってみようかと思います。 全体的には、対外的なイベントでの発表や主催、あるいは招待が増えたことが今年の特徴かなという感じで、新しいことへの取り組みなどの「挑戦」はあまりしていなかったかなとい…

Kotlinのコレクションは「不変」と「可変」に分かれていない

Kotlinのコレクションライブラリに関する解説として、よく、 Kotlinのコレクションは不変と可変に分かれていて〜 といった形のものを見かけます。そして、その例として、 val list: List<Int> = listOf(1, 2, 3) list.add(4) // コンパイルエラー のようなコード</int>…

Javaのジェネリクスは「まがい物」ではない

先日、自分が書いた kmizu.hatenablog.com に対する反応として、「Javaのようなまがい物のジェネリクスと比較するのは適切でない」「Javaのジェネリクスと比較するのは適切でない」(おそらくC#や(C++等(2017/09/24追記))の言語と比較して)といった コメ…

Re: Go にジェネリクスがなくても構わない人たちに対する批判について

先日自分がGoについてつぶやいたものが、id:methaneさんに捕捉されていて、それに対する反論記事 methane.hatenablog.jp があがっていたので、それに対する所感を書いてみました。(2017/09/22 追記):cocoatomoさんから指摘があったのですが、引用元は全て…

Scala関西Summit 2017に参加してきました!

実は今年が初参加なのですが、応募した発表、「プレースホルダ構文完全解説」が選考を通過したので、大阪まで行ってきました。 前日に、会社まで泊まりのための着替えなどを持っていき、会社が終わったら直行で新幹線で東京へ。@kawachi さんたちが手配して…

プレースホルダ構文と文字列補間を組み合わせた時の挙動についての考察

久しぶりの日記の更新です。今回のテーマは、Scalaにおける、Placeholder syntax for anonymous function(以後、プレースホルダ構文)とString Interpolation(文字列補間)を組み合わせた時にどのような挙動であるべきか、また、現状の挙動が妥当かについ…

Klassic言語開発日誌 〜列多相(row polymorphism)〜

最近、Klassic言語をちょくちょく更新しているのですが、半月くらい前にオブジェクトに関係する型推論の仕組みを入れました。知っている人は知っていると思いますが、OCamlとかにあるアレです。たとえば、 def distance(p, e) = { // abs: Double => Double …

「構文解析ハンズオン」を開催しました(2017/07/01)

今まで、あまり見たことがない(一般エンジニア向け)勉強会で、かつ、これを学ぶことは実用上とても意味があるテーマの一つに「構文解析」があります*1。 たとえば、Webアプリケーションにおいて、ユーザの入力に大して何らかの構文的制約をつけてバリデー…

技術イベント「Understanding Scala」を開催しました(6/10)

Understanding Scala - connpass 昨日、表題の技術イベントを自分主催で行いました。なんでこんなイベントをやろうと思ったかというと「皆、Scalaを難しくめんどくさい方法で学んでるのでは?」という疑問が自分の中であって、その原因として、サンプルプロ…

高階多相か高カインド多相、どちらが適切な用語かを考える

タイトルだけだと、わかってる人にしかわからないので、背景を説明します。サンプルコードはScalaですが、同じ機能はHaskellにもあります(あとは、C++のテンプレートテンプレート引数もこれに該当します。もうちょっとマイナーな言語だと他にいくつもありま…

Scala福岡2017で登壇してきます(2017/07/29(土))

Scala福岡主催のイベント、Scala福岡2017で登壇依頼をいただいたので、発表してきます。 詳しくは以下: scala.connpass.com 今のところ、セッション参加枠がまだまだあるようなので、九州あるいは九州近辺在住で、Scalaについて興味のある方等、参加を検討…

Klassic言語の現状のステータス

Klassic は自分が新たに去年くらいから開発し始めたプログラミング言語です。 まだ確固たる設計思想があるわけではなく、色々な構文や機能について試しに導入してみて、テストを書いて…みたいなのを繰り返してる 段階です。現状のKlassic言語の大雑把な特徴…

型クラスの真の力を見せる

昨日、 kmizu.hatenablog.com という記事を書いたわけだが、その後、今日、型クラスに関する議論が一部で(?)盛り上がっているようだ。それは型クラスじゃなくても実現できるのでは、いや、やっぱりインタフェースのようなものと思っていいのでは、などな…

型クラスをOrderingを用いて説明してみる

ちょっと今日は疲れてるので、表題の件について、簡単に書いてみる。私の経験上、型クラスにおける、最も多い誤解は、(Javaとかにおける)インタフェースのようなもの、というもので、これはかなり多くの人にみられるように思う。 まず、そもそも、何故そう…

シンフォニック=レインというゲームをお勧めしてみる(注意:ネタバレは見ないで)

このブログでオタク系の話題を書くのは、もしかしたら初めてかもしれませんが、表題のゲームのSteam版が発売されるというニュースを見つけたので、このゲームが好きな人間としてこれを機会に布教しとこうかと思って筆をとりました。 シンフォニック=レイン…

Scalaでimplicits呼ぶなキャンペーン

はじめのはじめに implicitsは可読性が…という人が居たら、この記事へのリンクを教えてあげていただければと思います TL;DR Scalaには俗に「implicits」と呼ばれる機能がある 実際にはそれらは3つの機能をまとめて指す用語である それぞれの機能は全く異な…

Rubyっぽく楽にIO処理を書けるライブラリScaruby 0.3をリリースしました

Scalaは標準IOライブラリが非常に貧弱な言語です。scala.ioはまともに使えるものではありませんし、JDKのライブラリのIOを使うのも面倒です。そこで、サードパーティのIOライブラリを使うことになります。そこで、いくつかサードパーティのIOライブラリを見…

Scalaに関する誤解と事実を語る

TL;DR 世間のScalaに関するイメージは、昔のままであることが多い 昔のままどころか、最初から間違ったイメージを持たれていることも多い 実際には、既に解決されている問題は多々あるし、改善に向かっていることも多い プロジェクト管理の問題を言語に押し…

Dottyで自作言語Klassicの処理系をビルドしてみる

つい先日、Scala 3になることが決定した次世代ScalaコンパイラDotty。このDotty、まだときどきコンパイラがクラッシュするなどのバグはありますが、Scala 2.11のライブラリを使うことができるので、Scala 2.11対応のライブラリやプロダクトを試しにビルドし…

ジョギングを再開

かなりどうでもいい話なのですが、一応の区切りとしてここに記す。ちょっと最近身体の衰えを感じることが増えてきたので、今日からジョギングを再開する ことにした。とりあえず、だいたい2日おきに3kmくらいのジョグを1ヶ月続けて、その次は4kmを1ヶ月、…

TwitterはScalaを捨ててません(少なくとも現在は)

なんだかTwitterの一部で www.utali.io の記事が話題になってるようですが、はっきり言って誤情報です(というか、何故そんな誤解をしたのか知りたいくらい)。根拠はいくつかありますが Twitterは最近(ここ数ヶ月)にScala CenterのAdvisory Boardにjoinし…

プログラミング言語作成ハンズオンを開催しました

connpass.com 今回開催したこのイベントは、私が学習用に作成したプログラミング言語nub github.com の文法や機能拡張を通じて、プログラミング言語処理系の作成の基礎について学ぶというものでした。 自分がこのイベントを開催したねらいは主に二つあって、…

正規表現のようでそうでない文字列マッチングライブラリ PEGEX 0.3リリース

PEGEXを開発し始めたのが確か2010年の春頃でした。元々は、私の専門であるPEGに対してより正規表現ライクな記法をサポートしたものでした。それから6年、現在は既にPEGのセマンティクスはほとんど残っておらず、(おそらく)全ての文脈自由言語を扱えるよう…

歯の健康を守ろう

この記事は、健康Advent Calendar 2016 12/13の記事です。 皆さん、歯、大丈夫ですか?自分は最近、右上の親知らずが虫歯にかかっていることが判明して抜歯する羽目になりました。ついでに、虫歯の治療も同時にしたせいで、一週間、左側の歯だけで飯を食わな…