yhara さんによる非同期処理を同期処理のように書く話。最後の方法は自分で言語処理系を作ってしまうこと。YARV[LINK] はヤーブと読む?
氏久さんによる Haskell の話。Ruby は自然なコード、Haskell はシンプルなコードが書けることを目標にしている。Haskell は草案を書くのにお勧めとのこと。
井上謙次 (deq) さんによる音声合成の実演。自然な音声を出すためには少なくとも 6000Hz (秒間 6000 回)、つまり 60fps (秒間 60 回) の動画と比べて 100 倍の頻度で処理をしなくてはいけないみたい。
50 人近くが机を四角に並べて向き合うという異例の読書会。「6 章 文」から「7.4 Object のプロパティとメソッド」まで読み進めました。以下読書会中に話題になった事柄を補足も交えて取り上げていきます。
if (x) { ... }
としたときに、x に書けるものが式、書けないものが文。
文にも返り値が存在するが、普通のコード上からは見えない。文の返り値は JavaScript で通常扱える値以外に empty という値を取りうる。eval 関数を使ってプログラムを評価すると、そのプログラム中で最後に empty でない値を返した文の返り値を、eval 関数の返り値として見ることができる。
eval("1 + 2"); // => 3
// セミコロンの自動補完により式文 1 + 2; と解析される。
// 式文の返り値は式分を構成する式の返り値なので、
// 式 1 + 2 の返り値である 3 が eval 関数の返り値となる。
eval("42; var x = 12;"); // => 42
// var 文の返り値は empty なので、式文 42; の
// 返り値である 42 が eval 関数の返り値となる。
eval("var x = 42;"); // => undefined
// すべての文の返り値が empty である場合、
// eval 関数の返り値は undefined となる。
function キーワードが関数宣言の一部として使われているのか、関数式の一部として使われているのかは、その function キーワードが出現した時点で決まる (文が終了した直後、すなわち新たな文の開始位置に function キーワードが来れば、それは関数宣言のものとみなされる)。関数が名前つきか無名か、関数本体の後に何が続くかなどは関係ない。
セコメントをする