kmizuの日記

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

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

PEGでa1 + a2 + ... + an = bを判定する

このネタは parser.connpass.com でToshihiro Kogaさんに教えてもらったもので、私のオリジナルではないのですが、ちょっとおもしろいので貼ってみます。 まず、非負整数nについて、1の出現数によってエンコードします。 0 = 1 = 1 2 = 11 3 = 111 4 = 1111 …

プログラミング言語の好き嫌いと人の好き嫌いは別物である

という至極当然のことを改めて言っておきたいです。 たとえば、自分は今はScalaをメイン言語として使っていて、Javaの色々な部分がイケてないなーと感じることは多々あり、時折ディスることもありますが、Javaユーザを見下したりしたことはないと思っていま…

Klassic言語の開発状況

リテラル Byte Short Int Long Float Double Boolean Unit String 演算 加減乗除、比較、論理演算、などなど。異なる数値型の暗黙変換は禁止(Int + LongなどはNG) リスト [ [1 2 3] [4 5 6] [7 8 9] ] こんな風に、改行だけでなく空白がセパレータになるこ…

プログラミング言語基礎勉強会で発表してきます

明日(6/11(土))に、こういう勉強会があるのですが、 xbase.connpass.com きょんさんから、出演依頼があったのと、これからあちこちでなんか発表したいなーという気分があったので発表することにしました。 タイトルは「私のプログラミング言語の学び方」です…

斜め読み論文紹介(1)「From APIs to Languages: Generalising Method Names」

タイトルは、斜め読み論文紹介ですが、 togetter.com ↑の辺の企画の亜種だと思ってください。気が向いたらときどき書いていこうと思います。第一回は、From APIs to Languages: Generalising Method Namesです*1。 唐突ですが、Smalltalkという言語がありま…

お役立ち中置パターン in Scala

Scalaには中置パターン(infix pattern)と呼ばれる機能があります。これは単純にいうと、 case class ~[A, B](a: A, b: B) のようにして定義したケースクラスに対して*1、 scala> val ab = new ~(1, "FOO") ab: ~[Int,String] = ~(1,FOO) scala> val a ~ b …

Amazon Prime Nowは確かに速かった

昨日、Amazon Prime Nowの存在を知り、送料を余計に支払えば1時間以内、無料枠でも2時間以内に注文した品を届けてくれるサービスであることを知った(該当エリアに住んでいることが条件。また、専用のPrime Nowアプリで注文する必要がある)。注文できる品物…

今更ES2015の勉強を始めてみた

タイトルの通りです。JavaScriptに関しては多少は知っていますが、知識が全然アップデートされていないので、この機会に再入門してみることにしました。以下はpackage.jsonなんかBabel関連で試行錯誤したので、結構変な構成になっているかも。 { "name": "es…