kmizuの日記

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

2015-12-01から1ヶ月間の記事一覧

2015年を振り返ったりする話

大晦日ですね。皆さん、大晦日にはその年の出来事をまとめるのが習わしのようなので、自分も何か書いてみることにします。 今年の振り返り 新人研修(Scala編)のテキストを書いた 既に ch.nicovideo.jp で書かれてる公開情報なので書きますが、「エンジニア…

チーズがうまい

私生活的なことは、普段このブログには書かずにTwitterで済ませるのですが、ちょっと気がむいたので書いてみます。といっても、タイトル以上のことはほとんどないのですが。 自分の住んでいるアパートの近くには、24時間営業の肉のハナマサがあり、そこで、…

新言語Klassic作り始めました

まあタイトルの通りなんですが、とりあえずこれまでの自分の言語作成遍歴についても触れておきます。 大学入学前:四則演算パーザ&評価器 大学1年:正規表現パーザ&評価器 大学2年:オブジェクト指向言語Onion(Javaコードへのトランスレータ) 大学3年…

ScalaでMLスタイルのモジュールを使ったプログラミングをする

何はともあれ以下のコードを見てください(ちなみに複素数クラスの実装は、 d.hatena.ne.jp を参考にさせていただきました): trait Complex { type T def re(a: T): Double def im(a: T): Double def make(re: Double): T def plus(a: T, b: T): T def minu…

IOと例外の取り扱いについて:どっちが良いスタイル?

追記:Java 7以降(つまり、現在)はtry-with-resources構文があるので、それを使えばよいです。ここでは、Java 6かそれ以前のコーディングスタイルについて主に言っています。 kmizu.hatenablog.com におけるkrxrossさんのコメント java脳だと、「fw = new …

Crystalの型システムで遊んでみた

この記事はCrystal Advent Calendar 2015 23日目の記事です。 まず最初にお断りしておきますが、私はCrystal言語に関しては初心者もいいところです。じゃあなぜCrystal Advent Calendarにわざわざ参加したかというと、Crystalは実用言語としてはやや特殊な静…

Scala雑談会やります(2016年1~2月予定)

詳細な時期は未定(来年初頭予定)ですが、Scala雑談会なるものをやろうと企画しています。Scalaの勉強会といえば、160回超の開催を続けているrpscalaが有名ですが、今回やろうとしているのは「勉強会」ではなく「雑談会」です。これの元ネタは、5年ほど前ま…

OpenJDK javacにみるMartin Odersky氏の痕跡

Martin Odersky氏と言えば、Scalaの開発者として有名ですが、そんな彼がJDK 1.3以降のjavacの作者でもある(ただし、その時点ではジェネリクスはオフであった)ことは知る人ぞ知る話になっています。 さて、ということは、OpenJDKのjavacのソースコードにOde…

『Scalaファンクショナルデザイン ―関数型プログラミングの設計と理解』の雑感

表題の書籍について、出たとき(2015/5/29)に買って随分放置していたのだが、最近、一通り読んでみたので簡単な感想を書いてみようと思う。 結論からいうと、Scalaについて特に使う予定はないがおおまかにどんな言語か知っておきたいという方にはそこまで悪…

無名関数のためのプレースホルダ構文の特異性 ~Scala Advent Calendar 2015じゃないよ~

本当はScala Advent Calendarの記事として書こうと思っていたのですが、既にだいたい埋まってしまっていたので、自分のブログで書きます。Scalaistの皆さん、プレースホルダ構文、使ってますよね? List(1, 2, 3, 4, 5).map(_ + 1) // List(2, 3, 4, 5, 6) …

Higher Order PEG(HOPEG) のパーザおよび評価器を公開しました

Higher Order PEG(HOPEG)とは何かというと、Parsing Expression Grammar(PEG)の規則が引数を取れるように拡張したものです(ちなみに、引数を取る規則をRule Constructorと呼んでいます)。 後で考えると、0階のPEG = 普通のPEGとすると、1階のPEG = First O…