読者です 読者をやめる 読者になる 読者になる

真面目なノート

こまめにその日の進捗などをメモしておく。

メモをつけながら生きていこうね

5/23

勉強とか

ES6、およびES7について

バイトでJSを書いているんだけど、折角ならES6、ES7を使って書きたいので、ざっと勉強をすることにした。

ES6

(a => a + 10)(20) // 10
  • class表記
    • プロトタイプベースでなくクラスを宣言できる。
    • chromeで使えなかった。
  • Template Strings
    • 文字列への変数埋め込み
var name = "yaz";
"hello, ${name}"
  • Destructuring
    • 配列の要素を分解できるよ。
[a,b,..rest] = [1,2,3,4,5]
// a === 1
// b === 2
// rest === [3, 4, 5]
  • 引数まわり
    • デフォルト引数
function f(x, y=10){
  return x + y;
}
f(1) === 11;
f(1,20) === 21;
  • 配列
function f(x, ...y){
   return x + y[0] + y[1];
}
f(1,2,3,4,5) === 6;
  • Spread Operator
function f(x, y, z){
  return x + y + z;
}
f(...[1, 2, 3]) === 6;
  • Let, Const
    • スコープの問題。letは定義されたスコープ内でのみ参照できる。
  • Generators
    • yield
  • Proxy
    • なんかオブジェクトに対してget/applyとかの振る舞いを定義できる。
    • Effective Pythonで見た気がする。オブジェクト指向の某。
var target = {};
var handler = {
  get: function (receiver, name) {
    return `Hello, ${name}!`;
  }
};

var p = new Proxy(target, handler);
p.world === "Hello, world!";
  • Subclassable built-ins
    • Arrayを親クラスにしてクラスを定義できる。
  • Promises
    • 非同期処理をなんとかするためのもの。
function timeout(duration = 0) {
    return new Promise((resolve, reject) => {
        setTimeout(resolve, duration);
    })
}

timout(1000).then(() => {console.log("hoge")});
  • TailCalls
    • 末尾再帰。そんなに嬉しいかと言われると微妙な感じだ。

Haskell

tanakhさんのスライドを幾つか読んで気持ちを高めた。とりあえずしばらくは、

  1. 48時間でScheme
  2. Parsecチュートリアル
  3. モナドのすべて

の順で勉強していき、モナドの扱いをマスターしようと思う。(これだけはなんとしても理解しておきたい!)

型システム

講義で扱った部分型の考え方や、パラメトリック多相、アドホック多相の考え方がイマイチ理解できない。
理解できないままプログラムを書くのも気色が悪いので、型システム入門(いわゆるTAPL)で勉強しようとおもう。
eBook Storeで電子書籍版が売っているので、こっちを買おう。

estore.ohmsha.co.jp