kmizuの日記

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

2015-01-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…

おーぷんぷろぶれむ!(1) ~ PEL ⊃ CFL 問題

こんばんは。久しぶりにブログ書いてみることにしたのですが、以前と同じネタだとモチベーションが保てないので、今回はちょっと変わったタイトルにしてみました。 平仮名にしたかっただけだろうおまえと言われそうですね。はいそうです。 というのはおいと…

PEGと構文解析に関するアレコレの勉強会 Vol.1 開催の動機について

勉強会についての詳細はこのエントリの一番下の方をみてもらえればと(もうほとんど枠が埋まっちゃってますが。この辺はほんとに予想外)。このエントリでは、なんでこんな勉強会やろうとしたかという動機でも書いておこうかなと思います。 私は大学院生時代…

Rustのおべんきょう(12) - Hello, List(count) -

淡々と。 gist.github.com

Rustのおべんきょう(11) - Hello, List(contains) -

ただひたすら書く。そろそろモジュールに分けた関数群を別ファイルに分離してもいいかも…。 gist.github.com

Rustのおべんきょう(10) - Hello, module -

Rustでモジュールを定義する方法について。mod module_name { }で囲んだ範囲がモジュールになるらしい。また、モジュール内の関数の内、pubを付けなかったものはモジュールprivateな関数になる。useはそれが使われたモジュールのスコープ内でのみ有効、など…

Rustのおべんきょう(9) - Hello, List(filter)

お次はfilter。少しずつ関数が増えていく。 gist.github.com

Rustのおべんきょう(8) - Hello, List(concat, flat_map) -

まだまだ所有権の概念に慣れない今日この頃だが、とりあえずArc<T>でごまかしている。ともあれ、ようやくList上の高階関数が揃ってきた。今回の難所はflat_map。間にconcat関数を定義してやることでなんとか実装。 gist.github.com</t>

Rustのおべんきょう(7) - Hello, List(map) -

map関数も欠かせませんね。というわけで: gist.github.com ループで回すのはめんどくさいので、fold_rightで実装しました。

Rustのおべんきょう(6) - Hello, List(fold_right) -

fold_leftができたので次はfold_rightもできるよね、というわけで。 gist.github.com

Rustのおべんきょう(5) - Hello, List(fold_left) -

Listを作ったので次はfold_leftだよねー、というわけで書いてみた。しかし、型を合わせるのに結構手間取ってしまった… gist.github.com

Rustのおべんきょう(4) - Hello, List! そのに -

Vec<T>型を引数で受け渡して、それをList<T>型に変換することで、とりあえずリストの生成を簡単にすることができた。しかし、ここでT : Copy にしちゃったからList<List<>>型はnew_list関数では作れない気がしてきた。 gist.github.com</list<></t></t>

Rustのおべんきょう(3) - Hello, List! -

とりあえず関数型プログラミングには必須だろうということで、Listを定義してみた。コンスセルのtail部分にいちいちBox::newつけなきゃならない(理由はわからなくもない)のがめんどいけどどうにかならないものか…。 gist.github.com

Rustのおべんきょう(2) - Hello, Macro! -

Hello, World!やったので次はHello, Macro!ですね。というわけで、サンプルコードを真似して書いてみました。 macro_rules! hello { () => ( println!("Hello, Rust Programming Language"); ) } fn main() { hello!(); } () が空引数にマッチするパターンを…

Rustのおべんきょう(1) - Hello, World! -

Rustには高機能なマクロがあると知って、ちょっと勉強を始めてみることにしました。飽きたらそこで止めるかもしれませんがご了承ください。 まずは定番のHello, World!書いてみましょう。 fn main() { println!("Hello, {rust}", rust = "Rust Programming L…

Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド [Kindle版] が発売されるようです

出版社の方から報告があったのですが、紙本でしか買えなくて持ち運びに不便という方に朗報です。 Amazon.co.jp: Scala関数型デザイン&プログラミング―Scalazコントリビューターによる関数型徹底ガイド 電子書籍: Paul Chiusano, Rnar Bjarnason, 株式会社ク…

QCon Tokyo 2015 Conference(4/21)でScalaの現在と今後について発表します

知人からの依頼で、QCon Tokyo 2015 Conferenceというもので、発表することになりました。ちょっと参加費が高い上に平日ですが、他にScala関係の発表あるし、自分が大学時代にバイトしてた産業技術総合技術研究所でお世話になった一杉 裕志先生の脳研究に関…

『Functional Programming in Scala』の翻訳本が出版されました

既にid:xuweiさんが書いてらっしゃるので今更なのですが、一応自分も一通り目を通して翻訳レビューしたので宣伝(とはいっても売れても印税は入りませんが :-))。 タイトルの邦訳の『Scala関数型デザイン&プログラミング ―Scalazコントリビューターによる関…